熊猫/ matplotlib条形图的颜色定义列

问题描述:

我想在python中制作条形图,并通过数据框列来制作彩条,这在R ggplot2中非常容易,所以我真的不明白为什么它在matplotlib/pandas中是如此的辛苦,我想了解如何做到这一点,并希望逻辑,因为我认为它毕竟不是很难熊猫/ matplotlib条形图的颜色定义列

这是我想要的一个例子。我在ggplot中做过的 - 我想要的只是使用数据框中的属性来定义颜色,属性可以是颜色字符串,即'k','r'或数据的一个特征,如男性/女性等。 enter image description here

这是工作以产生所述杆

import matplotlib.pyplot as plt 
import pandas as pd 
data = pd.DataFrame({'name' : ['a','b','c'],'value' : [1,2,3], 
        'c' : ['b','r','b']}) 
data.plot('name','value',kind='bar') 

的代码我尝试一个例子,但我想通过柱“c”的

但是当我添加颜色='C定义的颜色'那么它不起作用

data.plot('name','value',color='c',kind='bar',color='c') 

我尝试使用plot.scatter以及和它没有工作,要么

----更新

我做了一些更多的工作,这工作或多或少,我还没有想出如何正确对齐标签,我仍然喜欢为什么我必须有一个数字x轴,当它是真正的分类时(再次ggplot2自己处理这个) - 但至少这可以在代码中完成

fig, ax = plt.subplots() 
ax.bar(range(len(data)),data['value'],width=.5,color=data['c']) 
ax.set_xticks(range(len(data))) 
ax.set_xticklabels((data['name'])) 

一如既往感谢

+0

您可以发布一个例子人物?非常难以知道你想要什么W/O图片。 – 2014-11-07 17:15:08

试试这个:

data.plot('name','value',color=['r', 'g', 'b'],kind='bar') 

你可以给颜色的任何组合作为颜色参数的列表。如果条数多于颜色数,那么颜色就会回收。

enter image description here

我也强烈推荐的优秀brewer2mpl库。它提供了美观的颜色选择。该代码看起来是这样的:导致

import brewer2mpl 
bmap = brewer2mpl.get_map('Set2','qualitative',3,reverse=True) 
colors = bmap.mpl_colors 
data.plot('name','value',color=colors,kind='bar') 

在:

enter image description here

你可以从这里得到brewer2mpl:https://pypi.python.org/pypi/brewer2mpl/1.4

+1

感谢您的答案,并感谢啤酒技巧。然而,这个解决方案不起作用,因为我没有使用3个数据点(这只是一个llustration),但有更多的数据,因此我使用数据框中的代码来定义它们 - 这个想法实际上是让大多数条形体为单色并收取不同颜色的费用(甚至可能是一个)。有没有办法根据数据驱动颜色?在R例如,所有人必须传递给ggplot是填充= desired_column,它这样做 - 我会假设python会有类似的功能 – user1617979 2014-11-07 12:47:20

+0

感谢评论!并为您的问题更新! – user308827 2014-11-07 15:11:15

+0

有没有什么方法可以使用brewer选择你想要使用的特定颜色? – 2017-07-05 14:50:24