python - 你能在 matplotlib 中创建非均匀的可迭代图吗
问题描述
我正在尝试创建一个带有许多非均匀子图的图形。我希望能够使用可迭代索引创建图,这样我就不必单独创建每个图。
我可以使用 fig, ax = plt.subplots(5) 创建一系列统一的子图,其中我可以使用 ax[i] 绘制到各个轴。
fig, ax = plt.subplots(5)
展望未来,我可以使用 ax[i] 使用 ax[0].plt 等绘制每个图。
但是,我希望能够创建一系列如下所示的图:
gridsize = (10,3)
fig = plt.figure(figsize=(5,3))
ax0 = plt.subplot2grid(gridsize, (0, 0), colspan=3, rowspan=1)
for i in range(1,5):
ax1 = plt.subplot2grid(gridsize, (i, 0), colspan=2, rowspan=1)
ax2 = plt.subplot2grid(gridsize, (i, 2), colspan=2, rowspan=1)
我可以使用上面的 ax[i] 调用每个图。
有没有人有任何想法?谢谢。
解决方案
您可以将轴附加到列表中,从该列表中索引相应的项目或对其进行迭代。
import numpy as np
import matplotlib.pyplot as plt
gridsize = (10,3)
fig = plt.figure(figsize=(5,3))
ax0 = plt.subplot2grid(gridsize, (0, 0), colspan=3, rowspan=1)
ax = [ax0]
for i in range(1,5):
ax.append(plt.subplot2grid(gridsize, (i, 0), colspan=2, rowspan=1))
ax.append(plt.subplot2grid(gridsize, (i, 2), colspan=2, rowspan=1))
## Now plot to those axes:
for i in range(2*4+1):
ax[i].plot(np.arange(14),np.random.randn(14))
for axi in ax:
axi.plot(np.arange(14),np.random.randn(14))
plt.show()
推荐阅读
- reactjs - 将 renderToNodeStream 与 react-helmet 一起使用
- javascript - Rollup TypeScript 配置产生不完整的 JavaScript 包
- typescript - 初始化 Sentry 的 Vuejs(使用 Typescript)集成的代码构建失败
- node.js - 未安装 npm
- node.js - 从 Spotify Api 获取信息时遇到问题
- css - Vue.js 中的自定义列表重新排序动画
- r - 与单位无关的 position_nudge
- android - 尽管导航抽屉可见并打开,但侧面导航抽屉项目单击不起作用
- maven - Artifactory 检索最新并忽略 maven-metadata.xml
- mongodb - Nestjs Mongoose,如何通过 _id 删除数组成员?