【问题标题】:Change colormap in SymPy's ``plot3d``在 SymPy 的“plot3d”中更改颜色图
【发布时间】:2016-07-14 16:22:55
【问题描述】:

在 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")

得到

我找不到任何更改颜色图的kwarg。我知道我可以创建一个lambdify,然后直接使用matplotlib 进行绘图。但我很好奇是否有办法直接在 SymPy 中完成。

【问题讨论】:

    标签: python matplotlib plot sympy


    【解决方案1】:

    看了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)
    

    需要设置collections对象的cmap,在调用plot3d()之前调用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")
    

    【讨论】:

      【解决方案2】:

      为了让它与最新的 sympy 版本 (1.7.1) 一起工作,我需要做一些小改动:

      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[0].collections[0].set_cmap("magma")
      p._backend.ax[0].figure.show()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-09
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-28
        • 2010-10-18
        • 1970-01-01
        相关资源
        最近更新 更多