我正在尝试根据类别标签绘制数据点。
import numpy
import matplotlib as plt
x = numpy.random.uniform(size = [1, 15])
labels = numpy.array([1,2,2,2,2,1,1,2,3,1,3,3,1,1, 3])
plt.plot(x, 'o', c = labels)
当我做上述操作时,Python抱怨颜色值必须为0,1。然后我使用
plt.plot(x, 'o', c = labels/max(labels))
没有生成错误。弹出一个绘图窗口,但绘图窗口中没有任何内容。我想知道根据数据标签定义颜色的正确方法是什么?
我也在尝试根据类标签为节点着色。这是在networkx中完成的。一个简单的例子是:
import networkx as nx
G=nx.complete_graph(5)
nx.draw(G, node_col = node_labels)
数组node_labels将是5个顶点的标签。我尝试使用上面尝试的相同方法,但网络总是有红色节点。
任何见解将不胜感激。谢谢!
答案 0 :(得分:1)
由于标签是整数,因此可以将它们用作颜色列表的索引:
colors = ['#e41a1c', '#377eb8', '#4daf4a']
然后,使用散射比绘图更简单,因为您可以提供颜色列表/序列:
labels = np.random.randint(low=0, high=3, size=20)
plt.scatter(np.random.rand(20), np.random.rand(20), color=np.array(colors)[labels])
哪个会给你这个:
要获得漂亮的颜色,您可以使用colorbrewer。
答案 1 :(得分:0)
为了做你正在寻找的东西,你的标签数组必须是一个浮点数组。从它的外观来看,[labels]被解释为整数数组。因此,请按如下所示修改代码以获得所需的结果。
plt.plot(x, 'o', c = labels)
应更改为:
plt.plot(x, 'o', c = labels.astype(numpy.float)
保持棒极了!!