有没有办法在matplotlib中一次分配多个xlabels?

时间:2017-07-12 13:01:27

标签: python matplotlib

我想在matplotlib中一次分配多个xlabels。 现在我按如下方式分配多个xlabels。

import matplotlib.pyplot as plt

fig1 = plt.figure()
ax1 = fig1.add_subplot(211)
ax1.set_xlabel("x label")
ax2 = fig1.add_subplot(212)
ax2.set_xlabel("x label")

我觉得这种方式是多余的。 有没有办法像下面一样分配多个xlabels?

(ax1,ax2).set_xlabel("x label")

3 个答案:

答案 0 :(得分:3)

您可以使用列表理解。

[ax.set_xlabel("x label") for ax in [ax1,ax2]]

您也可以在子图创建时设置标签,这样可以将问题的完整代码简化为一行:

fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, subplot_kw=dict(xlabel="xlabel") )

答案 1 :(得分:3)

您可以将ax个对象存储在列表中。通过使用subplots函数,可以为您创建此列表:

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=1, ncols=2)

[ax.set_xlabel("x label") for ax in axes]

axes[0,0].plot(data)        # whatever you want to plot

答案 2 :(得分:0)

我更喜欢正常的for - 循环,因为它使你的意图明确:

for ax in [ax1, ax2]:
    ax.set_xlabel("x label")

如果您更喜欢单行,请记住map功能:

map(lambda ax : ax.set_xlabel("x label"), [ax1, ax2])