【问题标题】:How to customize x and y axes in sympy?如何在 sympy 中自定义 x 和 y 轴?
【发布时间】:2020-04-23 07:20:33
【问题描述】:
我在 sympy 中创建了一个绘图,并希望自定义 x 轴和 y 轴。我想把它们变成红色并让它们破折号。我环顾四周并尝试了一些东西,但似乎没有任何效果,例如:
plt.axhline(linewidth = 1, linestyle = '--', color = 'red')
plt.axvline(linewidth = 1, linestyle = '--', color = 'red')
有没有一些实际可行的方法?
提前致谢!
【问题讨论】:
标签:
matplotlib
plot
jupyter-notebook
anaconda
sympy
【解决方案1】:
*/sympy/plotting/plot.pySympy 的源代码有这样的注释:
特别是如果您需要可发布的图表并且此模块是
对你来说还不够 - 只需获取 _backend 属性并添加
任何你想要的直接到它。在 matplotlib 的情况下(
在python中绘制数据的常用方法)只需复制_backend.fig
是图形,_backend.ax 是轴并在它们上工作
就像在任何其他 matplotlib 对象上一样。
这意味着,一般来说,Sympy 的绘图可以通过修改底层的 Axes 对象进行调整,可以使用 Sympy 的 plot 实例的 _backend 属性访问该对象。
为了解决您的特定请求,每个Axes 包含Spine 对象中的OrderedDict,您要修改的是'bottom' 和'left' 对象(修改您拥有的这些对象使用他们的set_x 方法)
In [33]: from sympy import *
...: x = symbols('x')
...: p = plot(sin(x))
...: for spine in ('bottom', 'left'):
...: p._backend.ax.spines[spine].set_linestyle((0, (5, 10)))
...: p._backend.ax.spines[spine].set_edgecolor('red')
...: p._backend.fig.savefig('Figure_1.png')
产生
注意:如果有人使用p.save('...'),那么这个数字会被重置,他们会错过他们所做的任何调整,因此我使用了底层Figure对象的savefig方法,使用@987654340再次访问@ 属性。