更改 SymPy 的“plot3d”中的颜色图

nic*_*aro 5 python plot matplotlib sympy

在 SymPy 中,您可以自动根据表达式绘制曲面,即

from sympy import symbols
from sympy.plotting import plot3d

x, y = symbols('x y')
monkey_saddle = x**3 - 3*x*y**2
plot3d(monkey_saddle, cmap="RdYlBu")
Run Code Online (Sandbox Code Playgroud)

要得到

在此输入图像描述

我找不到任何kwarg改变颜色图的东西。我知道我可以创建一个lambdify然后直接使用 matplotlib 绘制绘图。但我很好奇是否有办法直接在 SymPy 中执行此操作。

HYR*_*YRY 4

我读了源代码sympy.plotting.plot.py,似乎cmap设置为jet

collection = self.ax.plot_surface(x, y, z, 
                                  cmap=self.cm.jet, 
                                  rstride=1, cstride=1, 
                                  linewidth=0.1)
Run Code Online (Sandbox Code Playgroud)

您需要设置对象的 cmap collections,并在调用plot3d()call之前unset_show()禁用调用pyplot.show()

from sympy import symbols
from sympy.plotting import plot3d
from sympy.plotting.plot import unset_show

unset_show()

x, y = symbols('x y')
monkey_saddle = x**3 - 3*x*y**2
p = plot3d(monkey_saddle)

p._backend.ax.collections[0].set_cmap("RdYlBu_r")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述