pyplot图例中的散点标签颜色错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyplot图例中的散点标签颜色错误相关的知识,希望对你有一定的参考价值。

我正在制作这个条形图:

...使用此代码段:

my_cmap = plt.get_cmap('copper')

plt.figure()
plt.set_cmap(my_cmap)
plt.pcolormesh(xx, yy, Z)

labels = ['Negative', 'Negative (doubtful)', 'Positive (doubtful)', 'Positive' ]
for i in [0, 1, 2, 3] :
    plt.scatter(clustered_training_data[y==i, 0], clustered_training_data[y==i, 1], c=my_cmap(i / 3.0), label=labels[i], s=50, marker='o', edgecolor='white', alpha=0.7)

plt.scatter(lda_trans_eval[q == -1, 0], lda_trans_eval[q == -1, 1], c='green', label='Your patient', s=80, marker='h', edgecolor='white')

plt.legend(prop={'size':8})

无论选择的颜色映射如何,只有一种(第二种)颜色始终为蓝色。相应的数据点在图中正确着色,我无法看到pyplot以不同方式为第二个标签着色的原因。

答案

我无法用虚拟数据重现它。运行它时会出现问题吗?

import matplotlib.pyplot as plt
import numpy as np
my_cmap = plt.get_cmap('copper')
fig = plt.figure(figsize=(5,5))
plt.set_cmap(my_cmap)

X = np.linspace(-1,5,100)
Y = np.linspace(-1,5,100)
X,Y = np.meshgrid(X,Y)
Z = (X**2 + Y**2)
Z = Z.astype(int)
Z += (X**2 + Y**2) < .5

ax = plt.pcolormesh(X, Y, Z)
for i in [0,1,2,3]:
    plt.scatter([i],[i],c=my_cmap(i / 3.0),label='i=%s'%str(i),
    edgecolor='white', alpha=0.7)

plt.scatter([],[],c=my_cmap(1/3.0), label='empty data')
plt.scatter([3],[1],c='green',label='Force color')
plt.legend(loc=2, prop={'size':8})
from os.path import realpath, basename
s = basename(realpath(__file__))
fig.savefig(s.split('.')[0])
plt.show()

另一答案

这发生在我身上。我用color而不是c来修复它。

plt.scatter(clustered_training_data[y==i, 0], clustered_training_data[y==i, 1], color=my_cmap(i / 3.0), label=labels[i], s=50, marker='o', edgecolor='white', alpha=0.7)

以上是关于pyplot图例中的散点标签颜色错误的主要内容,如果未能解决你的问题,请参考以下文章

在基础R的散点图中转换图例的形状和颜色

Matlab:如何在每个数据点获得不同颜色的散点图中设置图例的颜色?

如何将图例添加到具有颜色分配的散点图

如何在python的散点图中添加具有不同标记的多个图例?

带编号的点标签和散点图中的图例

来自 pandas 数据框的散点图中的 Matplotlib 图例