在 Python 3 中绘制颜色条



我正在尝试根据数组的颜色为误差线点着色。但是得到一个错误。我的代码如下所示:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cm import ScalarMappable, coolwarm as cmap
from matplotlib.colors import Normalize
fig = plt.figure(1)
sp = fig.add_subplot(1, 1, 1)
sp.set_xlabel(r'$x$')
sp.set_ylabel(r'$y$')
x = np.random.rand(10)
y = np.random.rand(10)
M = np.logspace(9, 10, 10)
norm = Normalize(vmin=8, vmax=11,clip=False)  # controls the min and max of the colorbar
smap = ScalarMappable(cmap=cmap, norm=norm)
for xi, yi, Mi in zip(x, y, M):
c = cmap(norm(np.log10(Mi)))  # make sure to color by log of mass, not mass
sp.errorbar(
xi,
yi,
yerr=[[.1], [.1]],
xerr=[[.1], [.1]],
ecolor=c,
marker='o',
mec=c,
mfc=c
)
cb = plt.colorbar(smap)
cb.set_label(r'$log_{10}M$')

我收到以下错误:类型错误:必须先set_array可映射

对于 matplotlib <3.1,你需要设置一个数组 - 它可以是空

sm = ScalarMappable(cmap=cmap, norm=norm)
sm.set_array([])
fig.colorbar(sm)

对于 matplotlib>= 3.1,这不再是必需的。

sm = ScalarMappable(cmap=cmap, norm=norm)
fig.colorbar(sm)

相关内容

  • 没有找到相关文章

最新更新