W Pythonie i Matplotlib można łatwo wyświetlić wykres jako okno wyskakujące lub zapisać wykres jako plik PNG. Jak mogę zamiast tego zapisać wykres na tablicy numpy w formacie RGB?Matplotlib: zapisywanie wykresu w tablicy numpy
15
A
Odpowiedz
35
To przydatna sztuczka do testów jednostkowych i tym podobnych, gdy trzeba wykonać porównanie pikseli z piksem z zapisaną fabułą.
Jednym ze sposobów jest użycie fig.canvas.tostring_rgb
, a następnie numpy.fromstring
z odpowiednim typem dtype. Są też inne sposoby, ale to ten, z którego korzystam.
E.g.
import matplotlib.pyplot as plt
import numpy as np
# Make a random plot...
fig = plt.figure()
fig.add_subplot(111)
# If we haven't already shown or saved the plot, then we need to
# draw the figure first...
fig.canvas.draw()
# Now we can save it to a numpy array.
data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))
Powiązane problemy
- 1. Tworzenie wykresu 3D z tablicy 3D numpy
- 2. Animowanie "rosnącego" wykresu liniowego w Pythonie/Matplotlib
- 3. Zapisywanie animacji scatterplot z matplotlib
- 4. Zapisywanie numpy tablicy do pliku txt rzędu mądry
- 5. Wykreślanie i zapisywanie wykresu R
- 6. Zapisywanie wykresu Google jako SVG?
- 7. Zapisywanie wykresu flotowego jako obrazu
- 8. Zapisywanie dużego wykresu w Entity Framework 5
- 9. Zapisywanie numpy tablica z danymi mieszanych
- 10. Matplotlib nie wyświetla wykresu w virtualenv
- 11. maskowanie części wykresu contourf w matplotlib
- 12. Generowanie płynnego wykresu liniowego za pomocą matplotlib
- 13. Numpy i matplotlib garbage collection
- 14. Seria plasterek 2D tablicy 3D w numpy
- 15. Zapisywanie tablicy obiektów w CloudKit
- 16. Zapisywanie i ładowanie macierzy Numpy w pytonie
- 17. Daty w xaxis dla wykresu matplotlib z imshow
- 18. Zapisywanie tablicy z NSCoding
- 19. Przesunięcie osi x do początku wykresu w matplotlib
- 20. Dodawanie arbitralnej linii do wykresu matplotlib w ipythonie notebooka
- 21. Dokonywanie wykresu z kwadratowymi osiami z log2 skalami w matplotlib
- 22. Zmiana kształtu tablicy w NumPy
- 23. Lista list w tablicy numpy
- 24. Liczba wierszy w tablicy numpy
- 25. indeks elementu tablicy w numpy
- 26. Zawijanie tablicy numpy w pytonie
- 27. Zwolnienie pamięci ogromnej tablicy numpy w IPython
- 28. evalution porównania tablicy numpy
- 29. wielkość NumPy tablicy
- 30. indeksy okrągłych numpy tablicy
Świetnie! 12345 – Petter
Czy jest to obsługiwane tylko w niektórych backendach? Wygląda na to, że nie działa z 'backendem' macosx' ('tostring_rgb'), który nie został znaleziony. – mirosval
Działa na Agg, dodaj 'matplotlib.use ('agg')' before 'import matplotlib.pyplot as plt', aby go użyć. – mirosval