首页 > 解决方案 > 在 Matplotlib lib 中创建 10 个不同的图形而不单独创建它们

问题描述

我正在尝试使用 Matplotlib 创建一个绘图,该绘图具有两个 x 轴、顶部和底部以及一个 y 轴。然后我想把这个情节分成10个不同的数字。我试图弄清楚如何在不单独创建每个图形的情况下做到这一点。

例如:x 轴是英里 30 - 60,次要 x 与主轴相同,但单位是英尺。我不想在一张图表上显示 30 英里。我希望每个图表只有 3 英里。

有人对此有建议吗?

标签: pythonpython-3.xnumpymatplotlib

解决方案


这个怎么样?当然,您必须弄清楚格式。

import numpy as np
import matplotlib.pyplot as plt

X = np.arange(30, 61)
Y = np.cos(X*0.5)

n_plots = np.ptp(X) // 3  # 3 miles per subplot
XY_chunks = list(zip(np.array_split(X, n_plots), 
                     np.array_split(Y, n_plots)))

fig, axs = plt.subplots(nrows=1, ncols=n_plots, figsize=(15, 2), sharey='row')

for i in range(n_plots):
    XX, YY = XY_chunks[i]  # Unpack X and Y for this plot
    axs[i].plot(XX,YY)  # Plot miles
    ax2 = axs[i].twiny()  # This will be your feet axis
    ax2.set_xticklabels((XX*5280).round(), rotation=90)  # Convert to feet
    axs[i].set_xlabel('Miles')
    ax2.set_xlabel('Feet')

plt.show()

带有 10 个子图的 Matplotlib 图


推荐阅读