[英]Sympy plotting in the jupyter notebook with inline backend
我可以修改plot = sympy.plot(..., show=False)
对象,以修改plot
的属性并稍后调用plot.show()
。
如果我需要自定义情节的某些方面不直接暴露plot
,例如,axes'labels的大小,我可以访问的Matplotlib后端我的情节, be = plot._backend
与我已经展示了条件(如plot.show()
。
可以在终端IPython会话中很好地工作(使用%matplotlib
魔术),因为该图不断更新并且可以在脚本中工作(不太好),因为出于各种原因,我可以做的,但总的来说,足够好了,就是使用后端的savefig
方法be.fig.savefig(...)
输入Jupiter笔记本。 出于性能原因,我更喜欢使用魔术的%matplotlib inline
,因此,如果我要访问Matplotlib后端,则必须在输出单元中实例化该图,但是稍后我进行的所有修改都将丢失,因为该图不再更新再次,我只能做一个savefig
。 如果我尝试去做
be.fig.show()
我收到错误信息
/home/boffi/lib/miniconda3/lib/python3.6/site-packages/matplotlib/figure.py:459: UserWarning:
matplotlib is currently using a non-GUI backend, so cannot show the figure
"matplotlib is currently using a non-GUI backend, "
是否可以做我想做的事,即使用Jupyter笔记本中的Matplotlib后端并使用%matplotlib inline
魔术来修改Sympy绘图的细节?
sympy图是matplotlib图。 现在肯定取决于您要做什么。 对于大多数stileistic适应,您可以在绘制之前设置各自的rcParam 。
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["xtick.labelsize"] = 16
plt.rcParams["xtick.color"] = "red"
from sympy import symbols
from sympy.plotting import plot
x = symbols('x')
p = plot(x**2, (x, -5, 5))
另外,确实应该可以在创建图形之后修改图形和轴。
fig = p._backend.fig
ax = fig.axes[0]
ax.set_xticks([-4,4])
for i, label in enumerate(ax.get_yticklabels()):
label.set_rotation(i*15)
label.set_size(15)
label.set_color((1.-i/10.,0,i/10.))
fig
可能值得注意的是, fig.show()
根本不应该fig.show()
联后端中工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.