我想知道是否有办法改变sypy图的像素密度/分辨率。例如,让我们考虑下面的简单代码片段:
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'
在plot
中使用dpi
属性不会引发任何错误,但也不会影响图像质量:graph = syp.plot(miles_to_km, dpi=300, show=False)
我还尝试使用matplotlib后端:
^{pr2}$其中plt
=matplotlib.pyplot
。然而,画布是空白的。另外,相关信息可能是我正在IPython笔记本中运行它,并且启用了%matplotlib inline
。在
下面的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的回答,这个问题现在得到了解决。我更新到ipython4.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()
假设您使用的是matplotlib后端(如果安装了matplotlib,这是默认设置),您只需} 。在
import matplotlib.pyplot
并使用^{这是因为sympy使用matplotlib进行打印,而且由于matplotlib是有状态的,所以它知道您正在使用哪个plot。在
下面是您的示例,但是使用savefig保存到png。在
如果您在IPython笔记本中,上述操作将不起作用,但您仍然可以使用指定的dpi保存它们。你只需要有点棘手。在
^{pr2}$相关问题 更多 >
编程相关推荐