【问题标题】:Wrong scatter label color in pyplot legendpyplot图例中的散点标签颜色错误
【发布时间】:2015-04-18 04:44:47
【问题描述】:

我正在制作这个条形图:

...使用此代码段:

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

【问题讨论】:

  • 我同意,这看起来很奇怪。您能否提供一个最小、完整且可验证的示例(带有数据)? stackoverflow.com/help/mcve。顺便说一句,你为什么称它为条形图
  • 打错字了,很明显是散点图。我将生成 MVE 并更新问题。
  • 您的解决方案是什么?我也有同样的问题...

标签: python matplotlib graph


【解决方案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()

【讨论】:

  • 这在我的机器上正常工作,它看起来和我们的图片一样。 :-/
  • 你能不能将负(可疑)案例绘制两次?
  • (我不确定您的评论是什么意思。这个带有虚拟数据的示例是否有 i=1 图例的蓝点?)
  • 评论应该说“它看起来和你的照片一样”,对不起。您的示例在我运行时没有出现错误(图例显示正常颜色),但我的示例仍然失败。
  • 嗯。好吧,我想我会从无错误的情况开始,然后添加您的特定数据,然后看看它在哪里切换......
【解决方案2】:

这发生在我身上。我通过使用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)

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 2021-04-15
    • 1970-01-01
    • 2021-10-29
    • 2018-12-27
    相关资源
    最近更新 更多