matplotlib 当使用零手柄长度和颜色Map表中的颜色时,图例中没有颜色

3qpi33ja  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(121)

我尝试绘制多条线,使用viridis colourmap中的颜色。我想在图例中设置handlelength=0,当我这样做时,图例现在完全空白。如果我不乱用handlelength,那么它工作得很好(所以图例显示值,然后是正确颜色的一行)。如果我单独设置颜色(例如c='C'+str(i)),这就可以工作。
下面的代码。matplotlib版本是3.6.2.,pytho是3.9.13

import matplotlib.pyplot as plt
import numpy as np

energy = np.linspace(40., 75., 36)
einds = np.linspace(0, 35, 8).astype(int)

fig, ax = plt.subplots(1, 1, figsize=(4,3), dpi=150)
for i in range(0, len(einds)):
    ax.plot(energy, energy+i, c=plt.cm.viridis([einds[i]/einds.max()]),
            label='{:.0f}keV'.format(energy[einds[i]]))
ax.grid()
leg=ax.legend(handlelength=0, handletextpad=0, fancybox=1,
              framealpha=1, loc='upper right', labelcolor='linecolor')
for item in leg.legendHandles:
    item.set_visible(False)
plt.tight_layout()

plt.show()

字符串


的数据

vxbzzdmp

vxbzzdmp1#

我是个白痴简单语法错误。应该是的

for i in range(0, len(einds)):
    ax.plot(energy, energy+i, c=plt.cm.viridis(einds[i]/einds.max()),
            label='{:.0f}keV'.format(energy[einds[i]]))

字符串
调用色彩Map表时没有方括号。
编辑:corect图包括-感谢gboffi的想法。
x1c 0d1x的数据

相关问题