如何在matplotlib 3d axis ax.plot_surface()中设置颜色?

如何在matplotlib 3d axis ax.plot_surface()中设置颜色?,matplotlib,Matplotlib,如何在3d曲面打印中设置颜色?默认情况下,Z值用于创建颜色,但这是对相同信息进行两次编码,因此是多余的。我想在颜色维度中嵌入一些其他信息 %matplotlib notebook import seaborn as sns sns.set_context('paper') from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import import matplotlib.pyplot as plt from matplo

如何在3d曲面打印中设置颜色?默认情况下,Z值用于创建颜色,但这是对相同信息进行两次编码,因此是多余的。我想在颜色维度中嵌入一些其他信息

%matplotlib notebook

import seaborn as sns
sns.set_context('paper')
from mpl_toolkits.mplot3d import Axes3D  # noqa: F401 unused import

import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np


fig = plt.figure(figsize=(8,8), dpi=300)
ax = fig.gca(projection='3d')

# Make data.
X = peaks2d.index
Y = peaks2d.columns
X, Y = np.meshgrid(X, Y)
Z = peaks2d.fillna(0).values.T

# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)
xlabel('Retention Time')
ylabel('m/z')
title('Peak Selection')

我尝试使用
color=(Z==0).astype(int)
,但没有成功。它回来了

ValueError:无效的RGBA参数:数组([[0,0,0,…,0,0,0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0,0,0,…,0,0,0]]


如果定义了颜色映射,该函数应该能够将整数映射到颜色,但显然没有实现?

您需要使用
facecolors
参数并向其提供颜色列表,如中所示。很明显,如果您愿意,可以使用matplotlib colormap生成此颜色列表。它实际上不起作用,我认为我的数据对matplotlib的分辨率太高。