颜色编码 matplotlib 标记符号

7
我正在尝试为我的绘图标记进行色彩编码。
思路是:有 x,y 和 z 值 - x 和 y 包含坐标,在 0 到 150 范围内的每个坐标(即每个 x,y 对)都对应一个数字。现在,我需要为每个坐标绘制一个正方形,可以使用 pyplot.plot(x,y, ls='s') 来完成,其中我可以单独设置正方形的标记边缘和填充颜色。通常,这些正方形都具有相同的颜色。
我尝试根据 z 值来改变颜色,例如:
z=0-30: 黑色,30-60: 蓝色,60-90: 绿色,90-120: 黄色,120-150: 红色
我尝试将数据分成这些区间,但不知道如何将它们映射到颜色并相应地绘制它们。有什么建议吗?谢谢!

1
可能是https://dev59.com/GG_Xa4cB1Zd3GeqP6_jI的重复问题。 - David Zwicker
谢谢,看起来很有前途,我会去查看的! - frixhax
这将类似(除了我不想绘制图像),但如下面的评论所述,我遇到了错误,c = colors和colors是我的z值列表,要求c必须是二维的。在我找到的所有示例中,情况并非如此。 - frixhax
明白了。使用 sc = plt.scatter(...)plt.colorbar(sc) 进行操作。 - frixhax
1个回答

2
将这些X,Y坐标分别存储在单独的X和Y中(每个Z范围对应一对),然后通过多条绘图线绘制它们。
概念示例:
X1,Y1 = """store your Z0-30 here"""
X2,Y2 = """store your z30-60 here"""
X3,Y3 = """store your z60-z90 here"""
X4,Y4 = """store your z90-120 here"""
X5,Y5 = """store your z120-150 here"""
fig=plt.figure()
pyplot.plot(X1,Y1,color='black')
pyplot.plot(X2,Y2,color='blue')
pyplot.plot(X3,Y3,color='green')
pyplot.plot(X4,Y4,color='yellow')
pyplot.plot(X5,Y5,color='red')
plt.show()

我建议使用散点图,听起来更适合你描述的内容。在这种情况下,将pyplot.plot更改为pyplot.scatter。您可以使用cmap按Z轴对它们进行着色。您还可以像this示例中显示的那样为每个组分配自定义标记。

谢谢,但这正是我不想做的 - 手动分配到箱子然后到颜色。 - frixhax
按照我建议的使用散点图。 - Bas Jansen
散点图的问题在于,我无法更改正方形标记的边缘厚度,只能更改大小。我需要一个特定的正方形大小和形状(最好是以轴单位定义,但似乎没有简单的方法来实现这一点)。 - frixhax
1
@Frixhax 想要制作自己的标记吗?可以参考这个例子:http://matplotlib.org/examples/pylab_examples/scatter_custom_symbol.html - Bas Jansen
不错,谢谢。但是,当我尝试这里显示的方式https://dev59.com/GG_Xa4cB1Zd3GeqP6_jI,使用colorss=np.random.randn(100) cm=cm.hot scatter(x, y, c=colors, marker='s', cmap=cm)时,我收到错误_raise ValueError("Color array must be two-dimensional")_。 - frixhax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接