python - 在 matplotlib 中选择要绘制的子图
问题描述
我正在编写一个函数来显示给定数据框中每列的前 10 个值计数值的摘要。
假设我们有以下数据框:
df = pd.DataFrame({'a':[1, 2, 3, 1, 2, 3, 1, 4, 4, 5, 6],
'b':[2, 1, 1, 1, 1, 1, 1, 4, 4, 5, 6],
'c':[1, 2, 3, 1, 2, 5, 5, 5, 5, 5, 6]})
我希望能够计算列数,并创建一个大小合适的绘图网格
我使用元组创建并找到正确选择的方格:
l = len(df.columns)
tups = [(z, z, z**2) for z in range(1, 10)]
param = tups[min([i for i, x in enumerate([l <= tup[2] for tup in tups]) if x])]
现在我创建子图:
for i in range(1, l+1):
plt.subplot(param[0], param[1], i)
我遇到的困难是我想为每个子图绘制每个子图,但是当我迭代时,它只是将每个子图设置为最后一个网格图,而将其他网格图留空。
for col in df.columns:
df[col].value_counts()[:10].plot('bar')
解决方案
这肯定已经在其他地方得到了回答,但由于某些原因,我可能会再次在这里输入。
for i, col in enumerate(df.columns):
ax = plt.subplot(param[0],param[1],i+1)
df[col].value_counts()[:10].plot('bar', ax=ax)
推荐阅读
- vaadin - 上传按钮的uploadSucceeded方法在单击上传按钮时被触发两次而不是一次
- momentjs - 为什么moment.duration 一个月差异的日期不返回月份
- php - 删除 opencart 产品模型
- java - 在通知流上播放声音
- javascript - 在新选项卡中打开 base64 pdf 会冻结某个文件大小的选项卡
- python - 在 Python 中锁定 Tkinter 主窗口并保持 X 按钮运行
- javascript - 如何在 Laravel 中通过多次浏览上传多个图像?
- python-3.x - 如何在没有发件人和服务器的情况下在python中将文本发送到电子邮件地址
- python-3.x - Python:如何在 x 轴上正确缩放此图中的点?
- python - Kivy 运行但不打开窗口