Мне интересно, есть ли способ изменить плотность пикселей/разрешение симпатичных графиков. Например, давайте рассмотрим простой фрагмент кода ниже:
import sympy as syp
x = syp.Symbol('x')
miles_to_km = x * 1.609344
miles_to_km.evalf()
graph = syp.plot(miles_to_km, show=False)
graph.save('./figures/miles_to_km.png')
graph.show()
Заметки:
Когда я попытался использовать
graph.savefig
, я получилAttributeError: 'Plot' object has no attribute 'saveimage'
. Я наткнулся на методsaveimage
в каком-то онлайн-ресурсе, и мне показалось, что это был распространенный подход — я думаю, API изменился?graph.save('./figures/miles_to_km.png', dpi=300)
выдает ошибку типа:TypeError: save() got an unexpected keyword argument 'dpi'
Использование атрибута
dpi
вplot
не вызывает никаких ошибок, но и не влияет на качество изображения:graph = syp.plot(miles_to_km, dpi=300, show=False)
Я также пытался использовать бэкэнд matplotlib:
plt.figure()
graph = syp.plot(miles_to_km, show=False)
#graph.save('./figures/miles_to_km.png')
plt.savefig('./figures/miles_to_km.png')
graph.show()
где plt
= matplotlib.pyplot
. Однако холст пуст. Также актуальная информация может заключаться в том, что я запускаю ее в блокноте IPython с включенным %matplotlib inline
.
- Я использую SymPy версии 0.7.6.
обходной путь backend
ниже показывает график в блокноте IPython, но также создает белый холст (как png)
graph = syp.plot(miles_to_km, show=False)
backend = graph.backend(graph)
backend.fig.savefig('ch01_2.png', dpi=300)
backend.show()
ИЗМЕНИТЬ и решение:
Благодаря ответу Cody Piersall проблема теперь решена. Я обновился до IPython 4.0 (ноутбук Jupyter) и построил его следующим образом.
graph = syp.plot(miles_to_km, show=False)
backend = graph.backend(graph)
backend.process_series()
backend.fig.savefig('miles_to_km.png', dpi=300)
backend.show()
plt.figure()
до симпатичного сюжета. Возможно, мне следует упомянуть, что я запускаю его в ноутбуке IPython, используя интерактивный режим. 22.08.2015