首页 > 解决方案 > 如何使在 for 循环中创建的子图共享相同的比例和 xticks(matplotlib)

问题描述

我有以下代码片段,用于创建 20 个子图,显示一条线,带有不同的标记。但是,在 y 轴上没有显示相同的比例,并且它们占据了一些子图的一部分,这使得整个图看起来很难看。

import matplotlib.pyplot as plt
markers = [".", ",", "o","v","^","<",">","s","p","P","*","h","H","+","x","X","D","d", "|", "_"]
num_subplots = len(markers)
fig = plt.figure()
for i, j in zip(range(num_subplots), markers): 
    try: 
        i +=1
        data = np.random.random(10)
        ax = fig.add_subplot(5,5,i)
        ax.plot(data, marker = j)
    except Exception as e:
        print(e)

我在这篇文章中发现了一些关于 sharex 参数的信息,这很有用,但是我无法在循环中实现这个想法。

如何使用 matplotlib 在 python 中为子图设置相同的比例

标签: pythonmatplotlib

解决方案


为什么不先创建子图:

fig, axes = plt.subplots(4,5, sharex=True, sharey=True)
for marker, ax in zip(markers, axes.ravel()):
    try:
        data = np.random.random(10)
        ax.plot(data, marker=marker)
    except Exception as e:
        print(e)

输出:

在此处输入图像描述


推荐阅读