【问题标题】:How to turn off matplotlib plot default axis?如何关闭 matplotlib 绘图默认轴?
【发布时间】:2020-07-15 08:08:46
【问题描述】:

我在没有任何装饰的网格中绘制 N 个图。使用axis('off')可以轻松地将具有数据的图设置为不显示轴。但是对于 subplots() 的“溢出”默认值,我该如何做到这一点?

以下是相关代码的工作示例:

import math

filenames = ['plot0', 'plot1', 'plot2', 'plot4', 'plot5', 'plot6', 'plot7', 'plot8', 'plot9', 'plotl0']

N = len(filenames)
Y = int(math.sqrt(N))
X = int(N / Y) + 1

fig, ax = plt.subplots(X, Y)

for i in range(N):
    ax[divmod(i, Y)].text(0.5, 0.5, str('Test'))
    ax[divmod(i, Y)].axis('off')

plt.show()

【问题讨论】:

  • for ax_i in np.ravel(ax): ax_i.axis('off') ?
  • 谢谢,您能解释一下为什么它与我在循环中的方法相反吗?你的不是基本上是一个不同的循环吗?
  • 您创建了所有轴来填充所有行和列。但通常 N 小于轴数。例如 N=10, X=4, Y=3 有 12 个轴,只有 10 个图。您还需要关闭最后两个的默认轴。

标签: python matplotlib


【解决方案1】:

使用 'add_subplot()' 将 'subplot' 添加到具有所需图形的 'fig' 对象中。

import matplotlib.pyplot as plt
import math

filenames = ['plot0', 'plot1', 'plot2', 'plot4', 'plot5', 'plot6', 'plot7', 'plot8', 'plot9', 'plotl0']

N = len(filenames)
Y = int(math.sqrt(N))
X = int(N / Y) + 1

fig = plt.figure()

for i in range(1,N+1):
    axes.append(fig.add_subplot(X, Y, i))
    axes[i-1].text(0.5, 0.5, str('Test'))
    axes[i-1].axis('off')

plt.show()

【讨论】:

  • 将其标记为答案,因为它是唯一的答案,并且与 cmets 中的上述答案一样有效。一旦我发现我需要初始化列表:)
  • 一种简单的方法是使用以下行 [a.axis('off') for a in ax.ravel()] 跟踪对 plt.subplots 的所有调用。简单的单线。
猜你喜欢
  • 2022-12-18
  • 2022-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2012-08-31
  • 2013-09-30
  • 2013-04-01
  • 2019-03-29
相关资源
最近更新 更多