使用标记功能时无法识别的标记样式

时间:2016-02-01 23:35:42

标签: python matplotlib

我正在试图找出为什么我的代码不起作用。我正在尝试将“mark”设置为变量,以便它可以根据特定列的内容使用不同的标记。情节中的其他所有工作都很好,但是当我添加这部分时:

mark = ["s" if t == "M" else "o" for t in z]

plt.scatter(x2[yesGEM],y1[yesGEM],c="green",label='Observed (GemN)', marker=mark)

我明白了:

ValueError: Unrecognized marker style ['o', 's', 'o', 'o', 'o', 's', 'o', 'o',......'o']

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我不认为您在致电marker时可以将scatter设置为可迭代(请参阅the docs),因此您必须将数据拆分为两组并分开分散:例如(假设x2y1对应z)中的值:

data_s = []
data_o = []
for i,t in enumerate(z):
    if t == 'M':
         data_s.append(x2[i], y1[i])
    else:
         data_o.append(x2[i], y1[i])

plt.scatter(*zip(*data_s), marker='s', c='g')
plt.scatter(*zip(*data_o), marker='o', c='g')