【问题标题】:Prescribing axes to the figure in matplotlib [duplicate]在matplotlib中为图形指定轴[重复]
【发布时间】:2020-04-14 23:18:40
【问题描述】:

我使用 pandas df.line.plot 创建了一个 3x3 子图:

ax=df.plot.line(subplots=True, grid=True,layout=(3, 3), sharex=True, legend=False,ylim=[-5,25])

它返回 3x3 的 Axes 对象矩阵。 现在我想为这些子图创建一个联合图例。

正如另一篇文章建议的那样,我应该使用:

handles, labels = ax.get_legend_handles_labels()
fig.legend(handles, labels, loc='upper center')

问题是我不能使用它,因为我没有在这里创建图。我只有斧头。我怎样才能让它发挥作用?

我编辑了这篇文章,因为我认为我可以创建一个图形并指定坐标轴,但我想这是因为我对主题的困惑。

【问题讨论】:

  • 你的意思是ax[0,0]
  • 我想将所有子图添加到图中,也许我很困惑,因为当我用 df.table.plot 创建图时,我没有创建图,而只是轴?
  • 是的,它返回一个 numpy 轴数组。

标签: python pandas matplotlib


【解决方案1】:

你有两个选择:


首先: 使用 cmets 中所示的双索引(用于行和列),然后使用 ax[0,0]ax[0,1]ax[0,2] ... ax[2,0]、@987654325 @,ax[2,2]。对于 3 行和 3 列,索引将从 0 到 2(所以 0、1、2)

你也可以使用ax[0][0]等等。两种格式是等效的。


第二种:如果不想使用两个索引,可以将ax展平,然后使用单个索引作为

ax = ax.flatten()

这会将ax 从二维对象转换为由 9 个子图组成的一维数组。然后你可以使用ax[0]ax[1]ax[2],...ax[8](9-1,因为在python中索引从0开始)

【讨论】:

  • 谢谢,那我应该如何将它们添加到图中?
  • @szczor1 :我不明白您将它们添加到图中的意思。哪个图?
  • 我编辑了我的问题,很抱歉造成混乱,这可能来自我对主题的不理解
猜你喜欢
  • 2019-12-10
  • 1970-01-01
  • 2011-03-29
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 2014-06-09
  • 2021-09-10
相关资源
最近更新 更多