如何使用Pandas和离散轴绘制hexbin? (或者,任何基于颜色的绘图)

时间:2015-07-12 08:22:51

标签: python pandas matplotlib plot

我有一个像

这样的DataFrame
     animal   country  value
0  elephant     India      5
1     camel      Iran      7
2  elephant  Cameroon      1
3     eagle       USA      2
4    turtle      Iran      3

我希望能够比较特定国家的动物和某个国家的动物。我认为最好的方法是使用x / y轴来表示动物和国家,同时让颜色为value - 所以我尝试了一个hexbin图。

当我尝试

a = pd.DataFrame({
    'animal': ['elephant', 'camel', 'elephant', 'eagle', 'turtle'],
    'country': ['India', 'Iran', 'Cameroon', 'USA', 'Iran'],
    'value': [5, 7, 1, 2, 3]
})
a.plot(kind = 'hexbin', x = 'animal', y = 'country', C = 'value')

我得到KeyError: 'animal'。但如果我对valuexy使用C,则不会发生这种情况 - 我想这是因为pandas需要数值。如何使用离散数据(动物/国家)?

我考虑过给每个人分配一个数字并制作像How to plot hexbin with dates in matplotlib and pandas?这样的自定义轴,但我觉得可能有一种更简单的方法。任何帮助表示感谢,谢谢。

1 个答案:

答案 0 :(得分:2)

你只想要一张热图吗?

import seaborn as sns

a2 = a.pivot_table( index='animal', columns='country', values='value', fill_value=0 )

sns.heatmap(a2)

enter image description here

顺便说一下,作为一般建议,您可能还希望将值存储为分类而不是字符串对象,但这里使用pivot_table使得在此特定示例中不需要它。