使用子图创建Pandas条形图

7

我正在使用pandas创建条形图。这里是一个例子:

df=pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot(kind='bar')

我想在一个图中绘制两个子图,一个包含a和b,另一个包含c和d。我该如何做?
此外,如果我想在两个由pandas创建的子图中包含另一个未由pandas创建的子图,该怎么办?所以我需要一个3x1的图,其中两个子图来自使用pandas的数据帧,而另一个则不使用pandas。 Example Plot
我要再试一次,但进行一些修改。
df=pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
x=[1,2,3,4,5]
y=[1,4,9,16,25]

fig, axes = plt.subplots(figsize=(8,8),nrows=2, ncols=2)
ax1=plt.subplot(2,2,1)
plt.plot(x,y)

#ax2=plt.subplot(2,2,2)
df["b"].plot(ax=axes[0,1], kind='bar', grid=True)
df["c"].plot(ax=axes[1,0], kind='bar', grid=True)
df["d"].plot(ax=axes[1,1], kind='bar', grid=True)

ax1.grid(True)
ax1.set_ylabel('Test')
ax1.set_xlabel('Test2')

#ax2.set_ylabel('Test')

如何为子图中的条形图添加坐标轴标签?请注意,我已经注释掉了ax2 = plt.subplot(2,2,2),因为我正在测试它,但这会完全删除条形图并添加标签。为什么会这样做,我该如何解决?下面是取消注释ax2时的输出。

Plot with the lines un-commented


嗨。这个标题误导了。请看一下文档 - rpanai
我已经看过了,但并没有真正帮助到我。 - Charanjit Pabla
1个回答

17

你可以从这里开始玩:

%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(10, 4),
                  columns=['a', 'b', 'c', 'd'])

fig, axes = plt.subplots(nrows=1, ncols=2)
df[["a","b"]].plot(ax=axes[0], kind='bar')
df[["c", "d"]].plot(ax=axes[1], kind='bar');

然后您可以查看这个链接


1
这很有帮助--非常感谢。我有一个后续问题,关于条形图的标签,我在上面发布了。 - Charanjit Pabla
1
请注意,当 nrows > 1ncols > 1 时,axes 是一个 n * m 的数组。请参见此处 - aydow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接