python - 从一个数据集创建一个 2x2 子图作为不同的图
问题描述
我正在使用一个大型人口普查数据集,并从中获取不同的数据,并最终将其表示为单个 .png。我已经单独创建了图表,但是当我尝试将它们添加到子图中时,它们会扭曲或轴变得混乱。
Current code:
fig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)
ax1.pie(df.data.valuecounts(normalize=True),labels=None,startangle-240)
ax1.legend(['a','b','c','d','e'])
ax1.axis('equal')
data2=df[['A']].dropna().values
kde=df.A.plot.kde()
binss = np.logspace(0.01,7.0)
ax2=plt.hist(hincp, normed=True, bins=binss)
ax2=plt.xscale('log')
ax3 = df.replace(np.nan,0)
ax3 = (df.groupby(['G'])['R'].sum()/1000)
ax3.plot.bar(width=0.9, color='red',title='Gs').set_ylabel('Rs')
ax3.set_ylabel('Rs')
ax3.set_xlabel('# G')
t = df[['p','o','s','y']]
ax4=plt.scatter(t.o,t.p,s=t.s,c=t.y, marker = 'o', alpha = 0.2)
plt.ylim(0, 10000)
plt.xlim(0,1200000)
cbar=plt.colorbar()
plt.title("this vs that", loc = 'center')
plt.xlabel('this')
plt.ylabel('that')
应显示所有四种类型的图表且不重叠。
解决方案
您为每个子图创建轴,但随后不使用它们。
ax1.pie(...)
看起来正确,但后来你不使用ax2
, ax3
, ax4
.
如果您要使用 DataFrame 绘图方法,只需plt.subplot
在每个新绘图之前调用。像这样。
df = pd.DataFrame(np.random.random((6,3)))
plt.subplot(3,1,1)
df.loc[:,0].plot()
plt.subplot(3,1,2)
df.loc[:,1].plot()
plt.subplot(3,1,3)
df.loc[:,2].plot()
plt.show()
plt.close()
或者使用您创建的轴。
df = pd.DataFrame(np.random.random((6,3)))
fig = plt.figure()
ax1 = fig.add_subplot(3,1,1)
ax2 = fig.add_subplot(3,1,2)
ax3 = fig.add_subplot(3,1,3)
ax1.plot(df.loc[:,0])
ax2.plot(df.loc[:,1])
ax3.plot(df.loc[:,2])
plt.show()
plt.close()
推荐阅读
- javascript - 隐藏“按'ESC'隐藏全屏”消息或在退出全屏之前给予确认
- php - PHP 中的唯一会话值
- jenkins - Jenkins Jobs Builder 的 Groovy DSL Pipeline 中的每个循环都失败
- flutter - 如何检测图像结束抖动
- ios - 在 SpriteKit 中允许触摸传播
- reactjs - 如何修复:“错误:超出最大更新深度”
- ruby-on-rails - Rails 5 API:自定义隐藏响应器,将处理操作返回的值
- c# - 如何使用 Microsoft.AspNetCore.ResponseCompression 压缩所有响应
- javascript - Nuxt 和 Axios - javaScript 堆内存不足
- c++ - 读取对象数组时编译时出错