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

xoshrz7s  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(103)

此问题在此处已有答案

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

from sympy import *
x = symbols('x')
p = plot(x, x*(1-x), (x, 0, 1))
ax = p._backend.ax[0]
ax.set_yticks((0, .05, .25))
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中测试。
from sympy import symbols, plot
import matplotlib.pyplot as plt

x = symbols('x')
# note show=False, the default is True
p = plot(x, x*(1-x), (x, 0, 1), show=False)

fig, ax = plt.subplots()

backend = p.backend(p)
backend.ax = ax
backend._process_series(backend.parent._series, ax, backend.parent)

backend.ax.set_yticks((0, .05, .25))
plt.close(backend.fig)

plt.show()

字符串


的数据

  • 在交互模式%matplotlib qt下,OP中的代码工作正常。
from sympy import symbols, plot
import matplotlib.pyplot as plt
%matplotlib qt  # %matplotlib inline - to revert to inline

x = symbols('x')
p = plot(x, x*(1-x), (x, 0, 1))
ax = p._backend.ax[0]
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对象的所有属性”

相关问题