matplotlib 更改Sympy笔记本中Sympy图的属性[重复]

xoshrz7s  于 2023-11-22  发布在  其他
关注(0)|答案(2)|浏览(138)

此问题在此处已有答案

Display two Sympy plots as two Matplotlib subplots(3个答案)
1小时前关闭
脚本中的以下代码按预期工作,

  1. from sympy import *
  2. x = symbols('x')
  3. p = plot(x, x*(1-x), (x, 0, 1))
  4. ax = p._backend.ax[0]
  5. ax.set_yticks((0, .05, .25))
  6. p._backend.fig.savefig('Figure_1.png')

字符串


的数据
但是当我在笔记本单元格中复制上面的代码时,



如果在一个笔记本电脑上工作时可以操作Sympy的plot的(隐藏)属性,那么如何操作呢?

lf3rwulv

lf3rwulv1#

  • 按照this answer的复制,在x1yter中使用内联模式,必须使用p.backend(p)
    • 问题是sympy.plotting.plot.plot(*args, show=True, **kwargs)创建自己的图形和轴 *,plots.show()立即显示绘图。
  • 由于内联模式的工作方式,图在ax.set_yticks((0, .05, .25))实现更改之前显示。
    *python v3.12.0matplotlib v3.8.1sympy v1.11.1中测试。
  1. from sympy import symbols, plot
  2. import matplotlib.pyplot as plt
  3. x = symbols('x')
  4. # note show=False, the default is True
  5. p = plot(x, x*(1-x), (x, 0, 1), show=False)
  6. fig, ax = plt.subplots()
  7. backend = p.backend(p)
  8. backend.ax = ax
  9. backend._process_series(backend.parent._series, ax, backend.parent)
  10. backend.ax.set_yticks((0, .05, .25))
  11. plt.close(backend.fig)
  12. plt.show()

字符串


的数据

  • 在交互模式%matplotlib qt下,OP中的代码工作正常。
  1. from sympy import symbols, plot
  2. import matplotlib.pyplot as plt
  3. %matplotlib qt # %matplotlib inline - to revert to inline
  4. x = symbols('x')
  5. p = plot(x, x*(1-x), (x, 0, 1))
  6. ax = p._backend.ax[0]
  7. ax.set_yticks((0, .05, .25))

展开查看全部
xwbd5t1u

xwbd5t1u2#

The documentation表示下面使用了matplotlib。使用它来调整的例子是在this answer to 'How to change sympy plot linestyle?'中:
“您可以使用matplotlib魔法和sympy plot对象的_backend属性来访问相应matplotlib plot对象的所有属性”

相关问题