如何根据文本字段设置散点图的标记颜色?

时间:2019-08-16 15:44:46

标签: python matplotlib colors scatter

我有一个二维的python列表,其中每行都有一个x,y,z值,但是我的z值是仅由两个值之一组成的文本,即“ br”或“ comp”

我想制作一个散点图,使用x,y值,然后基于文本将z值显示为颜色。这是我的数组的样子:

| x     | y     | z     |

|---    |-----  |------ |

| 1     | 1.2   | br    |

| 2     | 4.3   | comp  |

| 3     | 4.5   | comp  |

| 4     | 6.7   | br    |

我试图查看它是否可以识别并仅基于字段值创建两个单独的类,但是,我得到了ValueError:

ValueError: 'c' argument must be a mpl color, a sequence of mpl colors or a sequence of numbers, not ['br', 'comp', etc]

这是我的绘图代码的样子:


fig, axs = plt.subplots(nrows = 4, ncols = 2, sharex = True, sharey = True, figsize = (20,20))
axs = axs.flatten()
for j in range(len(devs)):
    axs[j].scatter([i[2] for i in devs[j]], [i[4] for i in devs[j]], c = [i[3] for i in devs[j]])
plt.show()

devs是2d python列表的列表。我的x值在第三列中,y值在第五列中,而z值在我的第四列中,因此是复杂的散点图代码行。

我的预期结果是一个x,y散点图,其中包含两种不同的彩色标记,一种颜色对应于z值为“ comp”的行,另一种颜色对应于z值为“ br”的行。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用词典来保存颜色名称。尝试下面的代码,看看天气如何。

Component

答案 1 :(得分:0)

当我在代码中实际构建列表时,我通过为文本分配值来解决了这个问题。但是@avin的解决方案也应该有效!

类似的东西:

if column_value == 'br':
                devs[k][i][3] = 1
            else:
                devs[k][i][3] = 0