熊猫散点图与颜色代码点

熊猫散点图与颜色代码点

问题描述:

我想从一个数据框中绘制一个散点图,每个点根据该值发生的频率以独特的颜色进行可视化。例如,我有以下数据框,由两个数值列表组成:熊猫散点图与颜色代码点

df = pd.DataFrame({'width': image_widths, 'height': image_heights}) 
df.head(10) 
    height width 
0 1093 640 
1 1136 639 
2 1095 640 
3 1136 639 
4 1095 640 
5 1100 640 
6 1136 640 
7 1136 639 
8 1136 640 
9 1031 640 

现在,如您所见,某些值对会多次出现。例如(1095/640)发生在索引2和4处。我如何给这个点代表“两次出现”的颜色。 如果颜色是从连续光谱中自动选取的,就像色条图一样,它会更好。这样,颜色阴影已经给你一个频率的印象,而不是通过手动查找颜色代表它的颜色。

我也想知道,着色的替代方法是将出现频率编码为点的半径。

编辑:

要指定我的问题,我想通了,那df.groupby(['width','height']).size()给我的所有组合的数量。 现在我缺乏将这些信息与情节中的点的颜色(或大小)联系起来的技巧。

+0

您可以为每个点分配基于hei的红色和绿色值ght和宽度以及基于频率的蓝色值(或alpha)。或者,您可以使用每个点的填充颜色,笔触颜色和alpha。有很多选择,这真的取决于你。 –

+0

@ alec_djinn:宽度上有两个以上的值,所以我必须分配很多值。不幸的是,在这个例子中只有这两个值出现。同样在未来,很有可能会有更多的未见尺寸的点被追加。但是,无论如何,感谢评论,迄今为止。 – muuh

+0

每个R,G,B通道有256个值... –

您是否希望宽度和高度以及大小在DataFrame

plot_df = df.groupby(['width','height']).size().reset_index(name='count') 
print(plot_df) 

    width height count 
0 639 1136  3 
1 640 1031  1 
2 640 1093  1 
3 640 1095  2 
4 640 1100  1 
5 640 1136  2 

散点图中的颜色和大小由cs关键字controled如果你使用DataFrame.plot.scatter

plot_df.plot.scatter(x='height', y='width', s=10 * plot_df['count']**2, 
        c='count', cmap='viridis') 

Scatter plot

+0

非常整洁的答案! ++ :) – MaxU