【问题标题】:Matplotlib: subplotMatplotlib:子图
【发布时间】:2016-06-01 07:29:58
【问题描述】:

我有几个时间序列信号 (8x8),我想使用 subplot 进行绘制。我的数据存储在一个名为 H(x, y, N) 的矩阵中,其中 N 是每个信号中的点数。我想使用子图显示 64 个信号。

fig  = figure(figsize=(12,8))
time = np.arange(0, Nt, 1)

for x in range(8):
    for y in range(8):
        subplot(8,y+1,x+1)
        plot(time,H[x,y,:])

我得到的是第一行有 8 个信号,第二行有 4 个,然后是 2、2、1、1、1 和 1。

【问题讨论】:

    标签: python loops matplotlib subplot


    【解决方案1】:

    subplot 索引不是这样工作的。来自docs to subplot

    subplot(nrows, ncols, plot_number)

    nrows 和 ncols 用于在概念上将图形拆分为nrows * ncols 子轴,而 plot_number 用于标识此函数要在概念网格中创建的特定子图。 plot_number 从 1 开始,首先跨行递增,最大值为 nrows * ncols

    所以,你想要nrows=8ncols=8,然后是 1-64 范围内的 plot_number,比如:

    nrows,ncols = 8,8
    for y in range(8):
        for x in range(8):
            plot_number = 8*y + x + 1
            subplot(nrows,ncols,plot_number)
            plot(time,H[x,y,:])
            
            # Remove tick labels if not on the bottom/left of the grid
            if y<7: gca().set_xticklabels([])
            if x>0: gca().set_yticklabels([])
    

    要删除刻度标签,请使用gca() 获取当前坐标区,并将xticklabelsyticklabels 设置为空列表:[]

    【讨论】:

    • 我在网上找了一个例子,我想我真的不明白它是如何工作的。非常感谢
    • 你知道如何删除轴上的值,因为我有太多的图,我什么都看不到了吗?
    • 当然,您需要删除xticklabelsyticklabels。尝试将它们设置为要删除刻度标签的子图的空列表。请参阅我的编辑以获取建议
    猜你喜欢
    • 2020-12-15
    • 2023-03-12
    • 2017-09-08
    • 2015-07-15
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2019-05-27
    相关资源
    最近更新 更多