gpt4 book ai didi

python - Pylab : map labels to colors

转载 作者:行者123 更新时间:2023-12-01 15:20:40 25 4
gpt4 key购买 nike

我只是从 scipy 开始堆。我正在使用 CSV 版本的 iris 数据集。我可以使用以下方法加载它:

iris=numpy.recfromcsv("iris.csv")

并绘制它:
pylab.scatter(iris.field(0), iris.field(1))
pylab.show()

现在我还想绘制存储在 iris.field(4) 中的类。 :
chararray(['setosa', ...], dtype='|S10')

将这些字符串映射到颜色以进行绘图的优雅方法是什么? scatter(iris.field(0), iris.field(1), c=iris.field(4))不起作用(从文档中它期望浮点值或颜色图)。我还没有找到一种自动生成颜色图的优雅方法。
cols = {"versicolor": "blue", "virginica": "green", "setosa": "red"}
scatter(iris.field(0), iris.field(1), c=map(lambda x:cols[x], iris.field(4)))

大致完成了我想要的,但我不太喜欢手动颜色规范。

编辑 : 最后一行稍微优雅的版本:
scatter(iris.field(0), iris.field(1), c=map(cols.get, iris.field(4)))

最佳答案

不管它值多少钱,在这种情况下,你通常会做更多这样的事情:

import numpy as np
import matplotlib.pyplot as plt

iris = np.recfromcsv('iris.csv')
names = set(iris['class'])

x,y = iris['sepal_length'], iris['sepal_width']

for name in names:
cond = iris['class'] == name
plt.plot(x[cond], y[cond], linestyle='none', marker='o', label=name)

plt.legend(numpoints=1)
plt.show()

enter image description here

@Yann 的建议没有错,但是 scatter更适合连续数据。

依靠轴颜色循环并多次调用 plot 更容易(您还可以获得单独的艺术家而不是集合,这对于诸如此类的离散数据是一件好事)。

默认情况下,坐标区的颜色循环为:蓝色、绿色、红色、青色、洋红色、黄色、黑色。

经过 7 次调用 plot ,它会在这些颜色上循环,所以如果你有更多的项目,你需要 set it manually (或者只是在每次调用 plot 时指定颜色,使用类似于上面@Yann 建议的插值颜色条)。

关于python - Pylab : map labels to colors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com