Я написал код для создания многослойной фигуры в matplotlib. Чтобы сделать рисунок более четким для использования в документе, я попытался увеличить dpi. Я нашел, однако, что это также изменили размеры фигуры, шрифт, линий и т.д., как показано на следующем простом примере:Регулировка качества фигуры в matplotlib
#First normal figure
fig, axarr = plt.subplots(2,2, figsize=(6,6))
for i,ax in enumerate(axarr.flatten()):
ax.plot(range(10))
ax.set_title('title'+str(i), fontsize=10)
ax.set_xlabel('x'+str(i), fontsize=10)
ax.set_ylabel('y'+str(i), fontsize=10)
plt.tight_layout()
#Again, with higher dpi
fig, axarr = plt.subplots(2,2, figsize=(6,6), dpi=200)
for i,ax in enumerate(axarr.flatten()):
ax.plot(range(10))
ax.set_title('title'+str(i), fontsize=10)
ax.set_xlabel('x'+str(i), fontsize=10)
ax.set_ylabel('y'+str(i), fontsize=10)
plt.tight_layout()
plt.show()
На моем компьютере (с помощью Matplotlib 1.4.3), вторая цифра больше по размеру, а текст больше, так что метки оси Y перекрываются. Без использования plt.tight_layout() совпадение осей подзаголовка также хуже. Очевидно, что это не полезно, когда вы пытаетесь сделать более качественную цифру. Что здесь происходит, и как я могу изменить качество фигуры и сохранить внешний вид фигуры? Есть ли решение, которое также будет работать, когда я настроил параметры подзадачи, добавил цветовые полосы и легенды и т. Д., Т. Е. Вообще? Заранее благодарим за любую помощь, которую вы можете дать.
Спасибо за это. Я хотел бы упомянуть, что, если это возможно, я бы предпочел не делать это с помощью savefig, поскольку я использую тот же скрипт с разными аргументами для создания большого количества цифр, и мне нужно будет вызвать savefig для каждого из них вне сценария (поскольку имена файлов, которые я использую, нелегко «программируемы»), и я нахожу, что могу легко ошибиться, например, сохранить неправильную цифру в файл, если я это сделаю. Если я буду делать что-то подобное в будущем, я мог бы также забыть о настройке dpi. Нет ли способа сделать это без использования savefig? – PeterW
Мне также было бы очень интересно понять, почему изменение dpi влияет на внешний вид графика в окне графического интерфейса пользователя, если это кому-то известно. – PeterW
Если ваши имена нелегко программируются, создайте список и передайте соответствующий аргумент в качестве имени сохраненного изображения. Что касается второго комментария, я отредактировал свой комментарий, чтобы объяснить, почему изменение dpi может быть одинаковым. dpi означает «точка на дюйм», а шрифты - это размер точек цифр/букв. Поэтому, в зависимости от того, как вы их выбираете, результат может быть одинаковым. – iblasi