Speichern Sie das Matplotlib-Plotbild in das Django-Modell

8

Zu Lernzwecken mache ich eine Webapp, die Plots mit Matplotlib erstellt, und ich möchte das Bild dieses Plots in das figure -Feld des Plot-Modells speichern, aber wenn ich ein Plot mache, speichert es nur ein leeres Bild in das Verzeichnis /media/figures/ . Ich habe das so gemacht, wie es ein anderer Beitrag vorgeschlagen hat, aber es funktioniert nicht.

Weitere Informationen Wenn ich das Plot mache, wird das Plot-Bild im Hauptverzeichnis meines Django-Projekts mit einem Namen wie <_io.StringIO object at 0xb1ac69ec> gespeichert, aber wie gesagt, das Plot-Bild, das im Modell gespeichert wird, ist leer. Außerdem verwende ich Python 2.7 wenn das wichtig ist.

%Vor%

Die Datei, die Plots erstellt und Plot-Instanzen erstellt haben.

%Vor%

Diagrammmodell

%Vor%     
eustass 23.02.2016, 15:21
quelle

2 Antworten

5

Es gibt mehrere Probleme mit Ihrem Code:

  • Sie sollten die Figur nicht in StringIO , sondern in io.BytesIO() speichern. Dies liegt daran, dass der Inhalt der PNG-Datei kein von Menschen lesbarer Text ist, sondern Binärdaten.

  • Ein weiteres Problem ist, wie Sie die BytesIO ( StringIO in Ihrem Code) handhaben, wenn Sie sie an savefig übergeben. A BytesIO ist nicht mit einer Datei verknüpft (das ist der springende Punkt, ein in-memory dateiähnliches Objekt zu haben), also hat es keinen Dateinamen - was Sie vermutlich damit erreichen wollen u'%s' % figure ausdruck. Schreiben Sie stattdessen einfach in das dateiähnliche Objekt selbst.

  • Drittens, verwenden Sie django.core.files.images.ImageFile anstelle von ContentFile . Initialisieren Sie es auch mit dem BytesIO -Objekt selbst, nicht mit seinem Byte-Wert.

Der relevante Teil Ihres Codes wird dann:

%Vor%     
Thomas Lotze 25.02.2016, 16:52
quelle
1

Sie können auch die plotly-Bibliothek ausprobieren - sie haben ein js-Skript, das Sie zum html hinzufügen können ( Ссылка ) und Sie können die Arrays, die in das Diagramm importiert werden sollen, immer serialisieren

    
Alicia 03.08.2016 23:24
quelle

Tags und Links