matplotlib的颜色图 [英] matplotlib's colormap
问题描述
我是python的新手,安装后,我已经完成了使用matplotlib绘制3d数据的工作.可悲的是,我唯一不知道如何完成的是颜色部分.我的图像仅显示表面,而根本不使用颜色条.这是我的代码.
I'm new to python and after installing it I've accomplished to plot my 3d data using matplotlib. Sadly the only thing I don't know how to get done is the color part. My image just shows the surface but doesn't use the color bar at all. Here is my code.
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"相关联.这可能是一个非常白痴的问题,如果您翻了个白眼,请对不起.
you can obviously see that it is all blue, and I want to relate the color with "U" using the full cm.jet
spectrum. This might be a very noob question, so sorry if you rolled your eyes.
推荐答案
添加行
surf.set_clim([np.min(Z),np.max(Z)])
在添加颜色栏之前.
3D绘图似乎没有考虑遮罩,因此您在数据中包含了 NaN
,这会混淆自动颜色限制.
It seems that the 3D plotting does not take into account the masking, so you are including NaN
in the data, which confuses the automatic color limits.
这篇关于matplotlib的颜色图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!