我有一个嵌套的dict,看起来像这样。
{A: { 'apples': 3,
'bananas':5,
'oranges':6,
'kiwis':9},
B: { 'apples': 1,
'bananas':9,
'oranges':3,
'kiwis':1},
C: { 'apples': 6,
'bananas':9,
'oranges':3,
'kiwis':3}}
在我的例子中,A,B,C是一年中的两个月。x轴是月份,即A、B、C等。苹果、香蕉、奇异果和桔子都算在内。我想使用matplotlib绘制一个分组的垂直条形图。它会有一个传说,有三种颜色的苹果,香蕉和橙子。
我只能使用dataframe.plot方法进行绘图:
pd.Dataframe(mydict).T.plot(kind=bar)
我希望能够使用matplotlib绘制相同的图形,这样我就可以管理图形大小并更改条形图的大小等。
4条答案
按热度按时间wnavrhmk1#
pandas的文档说pandas.DataFrame.plot()返回matplotlib.axes.axes对象。因此,基本上,您可以使用与使用matplotlib处理绘图方面相同的方式来处理它。
所以,用你的例子:
p4rjhz4m2#
首先,您可以使用
figsize
参数管理figsize,或者将.plot
方法返回的axes
存储在dataframe上,因此纯matplotlib
解决方案不是唯一的方法。话虽如此在matplotlib中学习分组条形图的重要内容是要有一个偏移量。每组分组条(例如apple)需要从xtick偏移宽度的函数(例如,宽度 * 2)
7fyelxc53#
ax = pd.Dataframe(mydict).T.plot(kind='bar', width=0.9, figsize=(12, 8))
是绘制字典的最简单方法。pandas.DataFrame.plot
使用matplotlib
作为默认后端,并返回matplotlib.axes.Axes
,因此matplotlib
化方法可以正常工作。pandas.DataFrame.plot
文档以了解所有格式化参数figsize
、title
、ylabel
、xlabel
、grid
、subplots
等等。ax.
调用.legend
和其他方法.T
转置 Dataframe 。无论索引中的值是什么,都将在x-axis
上,列标题将是颜色标签。*在
python 3.11.2
、pandas 2.0.1
、matplotlib 3.7.1
中测试df
df.T
vhmi4jdf4#
下面是示例代码。请让我知道如果你有任何问题,我会很乐意帮助你。