matplotlib 如何自定义sympy中的x和y轴?

dohp0rv5  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(126)

我已经在sympy中创建了一个图,并想自定义x轴和y轴。我想将它们变成红色并使它们成为虚线。我已经环顾四周并尝试了一些东西,但似乎没有工作,例如:

plt.axhline(linewidth = 1, linestyle = '--', color = 'red')
plt.axvline(linewidth = 1, linestyle = '--', color = 'red')

字符串
有没有一些方法可以做到这一点,实际上会工作?
先谢谢了!

z31licg0

z31licg01#

更新

Sympy的plot(...)._backend.ax现在(2023年11月)返回的不是单个Axes对象,而是一个Axes列表-通常带有单个元素。
你必须写p._backend.ax[0].method_of_axes()

Sympy的*/sympy/plotting/plot.py源代码有这样的注解:
特别是如果你需要发布准备图形,这个模块对你来说是不够的-只需获取_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')

字符串
生产x1c 0d1x
注意事项:如果使用p.save('...'),那么图形将重置,并且他们将错过他们所做的任何调整,因此我使用了底层Figure对象的savefig方法,再次使用_backend属性访问。

相关问题