【发布时间】:2026-01-14 22:25:01
【问题描述】:
我想知道是否有办法改变 sympy 图的像素密度/分辨率。例如,让我们考虑下面的简单代码 sn-p:
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 后端:
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。但是,画布是空白的。相关信息可能是我在启用了%matplotlib inline 的 IPython 笔记本中运行它。
- 我正在使用 SymPy v. 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 notebook) 并将其绘制如下
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()
【问题讨论】: