我希望深入了解散点图,并试图了解如何制作不同颜色的图例。从网上的一个教程中,我们得到了这段代码,但无法理解它在做什么
# Prepare Data
# Create as many colors as there are unique midwest['category']
categories = np.unique(midwest['category'])
colors = [plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]
Tags:
在这段代码中有一个隐含的假设,即唯一类别的数量是10或更少,因为
tab10
colormap只有10种颜色。尽管如此,在这种情况下,我们可能不会使用从0到1的均匀分布的浮点值来调用colormap,如果只有一个类别,它也会失败相反,如果颜色数较少,可以选择像
tab10
这样的“分类”颜色映射,否则可以选择颜色较多的颜色映射colormap的目标是将间隔[0-1]内的数字映射到颜色
如果考虑
tab10
颜色映射,plt.cm.tab10(0.0)
将返回颜色映射最左边的颜色,plt.cm.tab10(1.0)
将返回最右边的颜色在这里,用户希望获得与类别一样多的颜色(例如
N
),因此它们生成间隔为[0-1]的N
个数字例如,如果我们假设
categories
包含4个元素,那么[i/float(len(categories)-1) for i in range(len(categories))]
返回
[0.0, 0.3333333333333333, 0.6666666666666666, 1.0]
通过将这些数字中的每一个传递给
plt.cm.tab10()
,这些数字被转换成4种单独的颜色[plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]
返回
请注意,这整件事可以写得更简洁,如下所示:
plt.cm.tab10(np.linspace(0,1,len(categories)))
相关问题 更多 >
编程相关推荐