【问题标题】:In Python matplotlib, why isn't adding a color bar changing the color of a surface?在 Python matplotlib 中,为什么不添加颜色条来改变表面的颜色?
【发布时间】:2021-04-24 02:13:18
【问题描述】:

我一直在尝试使用 Python Matplotlib 中用于 3-d 表面的颜色条,但我无法让它实际对相应的表面进行颜色编码。下面的代码:

import numpy as np
import matplotlib.pyplot as plt
import math
from matplotlib import cm
fig = plt.figure()
ax = plt.axes(projection='3d')
x = np.linspace(0, 1600, 1600)
y = np.linspace(0, 1600, 1600)
X, Y = np.meshgrid(x, y)
j = 10*X+10*Y
surf = ax.plot_surface(X, Y, j)
fig.colorbar(surf)

生成这个图:

/

如您所见,颜色条不会对实际形状进行着色,并且颜色条的轴边界(0 到 1)对于条形的形状是无意义的。在我在在线代码中看到的似乎生成适当比例的各种修复中,没有一个有效。大多数(例如在不同的地方添加“vmin”和“vmax”参数)要么什么都不做,要么产生错误。唯一不同的是下面的代码,在颜色条中添加了一个“ticks”参数:

import numpy as np
import matplotlib.pyplot as plt
import math
from matplotlib import cm
fig = plt.figure()
ax = plt.axes(projection='3d')
x = np.linspace(0, 1600, 1600)
y = np.linspace(0, 1600, 1600)
X, Y = np.meshgrid(x, y)
j = 10*X+10*Y
surf = ax.plot_surface(X, Y, j)
fig.colorbar(surf, ticks=np.linspace(0, 32000,32))

此代码会生成此图表,

它现在完全没有颜色条的上轴边界,并且表面的颜色没有改变。

出了什么问题?

【问题讨论】:

    标签: python matplotlib colors


    【解决方案1】:

    colorbar 命令不会为您的曲面图着色。这是plot_surface 命令。您可以将cmap 传递给plot_surface

    surf = ax.plot_surface(X, Y, j, cmap='viridis')
    

    输出:

    【讨论】:

      猜你喜欢
      • 2021-01-07
      • 2015-10-27
      • 2013-04-15
      • 2014-01-12
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      相关资源
      最近更新 更多