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

问题描述 投票:0回答:2

我正在制作这个条形图:

...使用此代码段:

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以不同方式为第二个标签着色的原因。

python matplotlib graph
2个回答
1
投票

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

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()


0
投票

这发生在我身上。我用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)
© www.soinside.com 2019 - 2024. All rights reserved.