我试图在Python中制作一个条形图,并根据数据帧列对条形进行着色,在R ggplot2中这非常容易,所以我真的不明白为什么在matplotlib/pandas中这么难,我希望了解如何做到这一点,也希望能够理解逻辑,因为我认为这并不难。
这是我想要的一个示例,在ggplot中完成的所有操作 - 我想要的只是使用数据框中的属性来定义颜色,该属性可以是颜色字符串,例如'k','r'等,也可以是数据的特征,比如男/女等。
下面是我尝试过的一些代码,用于生成条形图:
这是我想要的一个示例,在ggplot中完成的所有操作 - 我想要的只是使用数据框中的属性来定义颜色,该属性可以是颜色字符串,例如'k','r'等,也可以是数据的特征,比如男/女等。
![enter image description here](https://istack.dev59.com/mSu6f.webp)
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"定义
但是当我添加color='c'时,它不起作用
data.plot('name','value',color='c',kind='bar',color='c')
我尝试使用plot.scatter,但它也不起作用。
---- 更新
我做了更多的工作,这个方法或多或少有效,我还需要找出如何正确对齐标签,当轴是分类而不是数字时(ggplot2可以自行处理),我仍然不喜欢为什么必须有数字x轴 - 但至少这可以通过代码实现。
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'] ))
一如既往地感谢您