matplotlib在包含子图的绘图中共享行标签(不是y标签)

时间:2013-04-07 14:19:16

标签: matplotlib

我想在matplotlib中制作一个类似格子的情节。这是我想要的草图:

enter image description here

我遇到的一件事就是为每一行获取一个共享行标签。即在我的情节中,我有四行用于四组不同的实验,所以我想要行标签“1个源节点,2个源节点,4个源节点和8个源节点”。

请注意,我引用y 标签,该标签用于标记因变量。因变量在所有子图中都是相同的,但我所遵循的标签是描述四类实验,每行一个。

目前,我正在制作情节:

fig, axes = plt.subplots(4, 5, sharey=True)

虽然我发现了很多关于共享y轴标签的信息,但我没有找到任何关于添加单个共享行标签的信息。

2 个答案:

答案 0 :(得分:4)

据我所知,没有ytitle或其他东西。您可以使用text来显示一些文字。 xy位于数据坐标中。 hava分别是水平和垂直对齐。

import numpy
import matplotlib 
import matplotlib.pyplot as plt

n_rows = 4
n_cols = 5
fig, axes = plt.subplots(n_rows, n_cols, sharey = True)

axes[0][0].set_ylim(0,10)

for i in range(n_cols):
    axes[0][i].text(x = 0.5, y = 12, s = "column label", ha = "center")
    axes[n_rows-1][i].set_xlabel("xlabel")

for i in range(n_rows):
    axes[i][0].text(x = -0.8, y = 5, s = "row label", rotation = 90, va = "center")
    axes[i][0].set_ylabel("ylabel")

plt.show()

答案 1 :(得分:0)

你可以像Robbert建议的那样给最上一行的子图提供标题

fig, axes = plt.subplots(4,3)

for i, ax in enumerate(axes[0,:]):
    ax.set_title('col%i'%i)