【问题标题】: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再次访问@ 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多