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

问题描述 投票:0回答:2

脚本中的以下代码按预期工作,

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')

但是当我将上面的代码复制到笔记本单元中时,这就是我得到的

如果在 Jupyter 笔记本中工作时可以操纵 Sympy

plot
的(隐藏)属性,该怎么做?

python matplotlib jupyter-notebook sympy
2个回答
0
投票

文档表明下面正在使用matplotlib。使用此方法进行调整的示例位于 “如何更改 sympy 图线型?”的答案中

“您可以使用 matplotlib magic 和 sympy 绘图对象的 _backend 属性来访问相应 matplotlib 绘图对象的所有属性”


0
投票
  • 根据重复项的这个答案,在 Jupyter 中使用内联模式。
  • sympy.plotting.plot.plot(*args, show=True, **kwargs)
    plots.show()
    由于内联模式的工作方式,该图会在
    ax.set_yticks((0, .05, .25))
    实施更改之前显示。
  • python v3.12.0
    matplotlib v3.8.1
    sympy 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
    ,代码运行良好。
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))
© www.soinside.com 2019 - 2024. All rights reserved.