我有一个二维的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”的行。
谢谢!
答案 0 :(得分:1)
您可以使用词典来保存颜色名称。尝试下面的代码,看看天气如何。
Component
答案 1 :(得分:0)
当我在代码中实际构建列表时,我通过为文本分配值来解决了这个问题。但是@avin的解决方案也应该有效!
类似的东西:
if column_value == 'br':
devs[k][i][3] = 1
else:
devs[k][i][3] = 0