【问题标题】:matplotlib's colormapmatplotlib 颜色图
【发布时间】:2012-10-30 14:47:01
【问题描述】:

我是 python 新手,安装它后,我已经完成了使用 matplotlib 绘制我的 3d 数据。可悲的是,我唯一不知道如何完成的是颜色部分。我的图像只显示表面,但根本不使用彩条。这是我的代码。

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')

data = np.genfromtxt('Uizq.txt')
x = data[:,0]
y = data[:,1]
z = data[:,2]

xi = np.linspace(min(x), max(x))
yi = np.linspace(min(y), max(y))

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('U')

X, Y = np.meshgrid(xi, yi)
Z = griddata(x, y, z, xi, yi)
ax.set_zlim3d(np.min(Z), np.max(Z))


surf = ax.plot_surface(X, Y, Z, rstride=2, cstride=2, cmap=cm.jet,
                   linewidth=0.5, antialiased=False)

fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

您显然可以看到它全是蓝色,我想使用完整的cm.jet 光谱将颜色与“U”相关联。这可能是一个非常菜鸟的问题,如果你翻白眼,很抱歉。

【问题讨论】:

标签: python colors matplotlib


【解决方案1】:

添加一行

surf.set_clim([np.min(Z),np.max(Z)])

在添加彩条之前。

3D 绘图似乎没有考虑遮罩,因此您在数据中包含NaN,这会混淆自动颜色限制。

【讨论】:

  • 谢谢,解决了这个问题,虽然表面的边界有点奇怪,但它确实有效。顺便问一下,“掩蔽”是什么意思?
  • 掩码数组是一个带有有效数据掩码的数组。 griddata 使用它来标记它无法推断的点(由于在您的数据之外)并返回 NaN 然后被屏蔽。
猜你喜欢
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多