Matplotlib nie działa bezpośrednio z pikselami, ale raczej z fizycznymi rozmiarami i DPI. Jeśli chcesz wyświetlić figurę o określonym rozmiarze piksela, musisz znać DPI swojego monitora. Na przykład ten link wykryje to za Ciebie.
Jeśli masz obraz o wymiarach 3841x7195 pikseli, jest mało prawdopodobne, że monitor będzie tak duży, więc nie będziesz w stanie wyświetlić figury tego rozmiaru (matplotlib wymaga, aby figura zmieściła się na ekranie, jeśli poprosisz o rozmiar za duży, zmniejszy się do rozmiaru ekranu). Wyobraźmy sobie, że jako przykład potrzebujesz obrazu 800x800 pikseli. Oto jak wyświetlić obraz o rozdzielczości 800x800 pikseli na moim monitorze ( my_dpi=96):
plt.figure(figsize=(800/my_dpi, 800/my_dpi), dpi=my_dpi)
Więc po prostu dzielisz wymiary w calach przez swoje DPI.
Jeśli chcesz zapisać figurę o określonym rozmiarze, to inna sprawa. DPI ekranu nie są już tak ważne (chyba że poprosisz o figurę, która nie zmieści się na ekranie). Korzystając z tego samego przykładu piksela 800x800, możemy zapisać go w różnych rozdzielczościach, używając dpisłowa kluczowego z savefig. Aby zapisać go w tej samej rozdzielczości, co ekran, użyj tej samej rozdzielczości:
plt.savefig('my_fig.png', dpi=my_dpi)
Aby zapisać go jako obraz o rozdzielczości 8000x8000 pikseli, użyj rozdzielczości 10 razy większej:
plt.savefig('my_fig.png', dpi=my_dpi * 10)
Zwróć uwagę, że ustawienie DPI nie jest obsługiwane przez wszystkie backendy. Tutaj używany jest backend PNG, ale backend pdf i ps będą implementować rozmiar inaczej. Ponadto zmiana DPI i rozmiarów wpłynie również na takie rzeczy, jak rozmiar czcionki. Większy DPI zachowa te same względne rozmiary czcionek i elementów, ale jeśli chcesz mieć mniejsze czcionki dla większej figury, musisz zwiększyć rozmiar fizyczny zamiast DPI.
Wracając do przykładu, jeśli chcesz zapisać obraz o rozmiarze 3841 x 7195 pikseli, możesz wykonać następujące czynności:
plt.figure(figsize=(3.841, 7.195), dpi=100)
( your code ...)
plt.savefig('myfig.png', dpi=1000)
Zauważ, że użyłem wartości 100 dpi, aby zmieścić się na większości ekranów, ale zapisałem z, dpi=1000aby uzyskać wymaganą rozdzielczość. W moim systemie daje to png o rozdzielczości 3840x7190 pikseli - wydaje się, że zapisane DPI jest zawsze o 0,02 piksela / cal mniejsze od wybranej wartości, co będzie miało (mały) wpływ na duże rozmiary obrazu. Więcej dyskusji na ten temat tutaj .