将Pandas pivot_table子图绘制到Matplotlib画布时生成新画布问题
解决Matplotlib子图中柱状图显示异常的问题
看起来你遇到的问题应该是两个柱状图没有正确渲染到对应的子图中,对吧?这是因为你用pandas的plot()方法时,没有指定要绘制到哪个子图轴上,默认情况下它会使用当前活跃的Matplotlib轴,导致两个图可能重叠或者只显示一个。
修正后的代码
import matplotlib.pyplot as plt import pandas as pd # 假设这里正确读取了数据 df = pd.read_csv(...) temp1 = df['Credit_History'].value_counts(ascending=True) temp2 = df.pivot_table(values='Loan_Status', index=['Credit_History'], aggfunc=lambda x: x.map({'Y':1,'N':0}).mean()) fig = plt.figure(figsize=(8,4)) ax1 = fig.add_subplot(121) # 指定ax参数,把temp1的柱状图画到ax1上 temp1.plot(kind='bar', ax=ax1) ax1.set_title('Credit History Count') # 可以加标题让图更清晰 ax1.set_xlabel('Credit History') ax1.set_ylabel('Count') ax2 = fig.add_subplot(122) # 同样指定ax参数,把temp2的柱状图画到ax2上 temp2.plot(kind='bar', ax=ax2) ax2.set_title('Loan Approval Rate by Credit History') ax2.set_xlabel('Credit History') ax2.set_ylabel('Approval Rate') plt.tight_layout() # 自动调整子图间距,避免标签重叠 plt.show()
关键说明
- 核心问题:pandas的
plot()方法默认使用当前的Matplotlib轴(通过plt.gca()获取),所以必须通过ax参数明确指定要绘制的子图对象,这样才能把每个柱状图放到对应的子图里。 - 添加
plt.tight_layout()可以自动调整子图之间的间距,避免标题、坐标轴标签互相重叠,提升可读性。 - 给每个子图添加标题和坐标轴标签,能让图表的含义更清晰,这也是可视化的好习惯。
内容的提问来源于stack exchange,提问作者user3457834
相关产品推荐
相关产品推荐

