我在matplotlib中制作了一组子图(比如3 x 2),但我的数据集少于6个。如何使剩余的子情节为空白?
安排如下所示:
+----+----+
| 0,0| 0,1|
+----+----+
| 1,0| 1,1|
+----+----+
| 2,0| 2,1|
+----+----+
字符串
这可能会持续几页,但在最后一页,例如,有5个数据集到2,1框将是空的。不过,我将数字申报为:
cfig,ax = plt.subplots(3,2)
型
因此,在子图2,1的空间中,有一组带有刻度和标签的默认轴。我怎样才能用程序来渲染那个没有坐标轴的空白空间呢?
6条答案
按热度按时间wlp8pajw1#
你总是可以隐藏你不需要的轴。例如,以下代码完全关闭第6个轴:
字符串
并得到下图:
的数据
或者,请参阅问题Hiding axis text in matplotlib plots的公认答案,以了解保留轴但隐藏所有轴装饰的方法(例如:刻度线和标签)。
nhjlsmyf2#
自从第一次提出这个问题以来,matplotlib中已经添加了一个 * 大大 * 改进的subplot interface。在这里你可以创建你所需要的子情节,而不需要隐藏额外的内容。此外,子图可跨越其他行或列。
字符串
的数据
t1rydlwq3#
还可以使用Axes.set_visible()方法隐藏子图。
字符串
2o7dmzc54#
当你需要的时候,是否可以选择创建子情节?
字符串
xfyts7mz5#
要删除位于(2,1)的图,可以使用
字符串
xlpyo6sf6#
使用matplotlib的新版本(从3.4.0开始),您可以使用字符串数组来设计子图模式(行和列),并通过调用matplotlib.pyplot.subplot_mosaic来创建图形。
使用
cfig, axs = plt.subplot_mosaic(mosaic)
代替cfig, ax = plt.subplots(3,2)
,并以如下方式定义mosaic
:字符串
在此模式中,空白子图由
'.'
表示(默认情况下,这可以在调用中参数化)。您不需要删除空白子图,因为它们甚至没有创建。要选择绘制轴,只需使用
axs[id]
,其中id
是用于标识镶嵌阵列中的子图的字符串。范例:
型
x1c 0d1x的数据
使用
subplot_mosaic
,您不仅可以引入空白子图,还可以合并“单元格”,以便在多个行和/或列上创建子图,只需制作所需的镶嵌阵列,其余代码不变。另外,mosaic
不需要是数组,它也可以是多行字符串。例如,从Complex and semantic figure composition,使用:型
结果:
的