【问题标题】:Understanding of fig, ax, and plt when combining Matplotlib and PandasMatplotlib与Pandas结合时对fig、ax、plt的理解
【发布时间】:2021-05-30 07:25:03
【问题描述】:

在结合 Matplotlib 和 Pandas 进行绘图时,我试图更好地了解图形、轴和 plt 是如何组合在一起的。接受的answer here 帮助我以我通过这一行理解的面向对象的方式连接了 Matplotlib 和 Pandas:

fig, ax = plt.suplots()
df.plot(ax=ax)

但随着我的深入,answer here 让我失望了。具体来说,我仍然有需要直接从 plt 调用的方法,这些方法不适用于图形或轴。示例:

fig, ax = plt.subplots()

df[['realgdp','trend']]["2000-03-31":].plot(figsize=(8,8), ax=ax)
ax.set_title('Real GDP & Trend')
ax.set_ylabel('Readl GDP')

plt.xticks(rotation=45)

如果我尝试从 ax 或 fig 中调用 xticks(rotation=45),则会收到一个错误,即 ax 和 fig 都没有 xticks 方法。我上面的解决方案有效,但我不明白为什么。

当我输入plt.xticks(rotations=45) 时,该信息会发送到哪里?为什么answer here 中的评论“当您使用模块 pyplot 上可用的功能时,您正在绘制到 '当前图形' 和 '当前轴'”在这种情况下不适用?为什么要直接取消plt?

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    plt.xticks() 仅适用于“当前”斧头。您应该改用ax.set_xticks()ax.set_xticklabels()ax.tick_params()

    plt.xticks() 是一个相当古老的函数,仍然受支持,模仿类似的 matlab 代码,诞生于人们只在一个绘图上绘图的时代。较新的功能更通用,提供更多选项。

    简而言之:您不需要直接调用plt,而是邀请您使用ax 函数。当调用plt.xticks() 时,它会被重新路由到当前活动的ax(通常是最后一个创建的)。

    【讨论】:

    • 这为我填补了缺失的点。我能够用 ax.tick_params(axis='x', rotation=45) 替换 plt.xticks(rotation=45)。现在我可以将 pandas 和 Matplotlib 以一种快乐、合理、面向对象的方式交织在一起。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2015-06-16
    • 1970-01-01
    • 2021-07-11
    • 2017-11-21
    相关资源
    最近更新 更多