我想在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")
答案 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])