【问题标题】:Set the legend location of a pandas plot设置熊猫图的图例位置
【发布时间】:2020-05-04 14:36:56
【问题描述】:

我知道如何使用plt.legend(loc='lower left') 设置matplotlib 绘图的图例位置,但是,我使用pandas 方法df.plot() 进行绘图并且需要将图例位置设置为“左下角”。

有人知道怎么做吗?

已编辑:我实际上是在寻找一种通过 pandas 的df.plot() 而不是通过plt.legend(loc='lower left') 的方法

【问题讨论】:

  • 你能展示一个 plt.legend(loc='lower left') 不起作用的示例代码吗?
  • @danielLima 打完df.plot(...)之后就打plt.legend(loc='lower left')
  • 嗨,当调用 df.plot() 时,我实际上正在寻找一种通过 pandas 实现此目的的方法
  • @DanielLima Pandas 绘图只是 matplotlib 上的一层。 Pandas 有自己的数据传递方式,但设置都是由 matplotlib 处理的。 Pandas 复制 matplotlib 的所有广泛功能是没有意义的。 Pandas 可以从数据框快速创建图。如果你需要微调,可以使用 matplotlib。
  • 我已根据您的编辑编辑了我的答案,我建议您看看

标签: python pandas matplotlib plot legend-properties


【解决方案1】:

编辑

为了澄清原始答案,目前无法通过pandas.DataFrame.plot 做到这一点。在其当前实现(版本 1.2.3)中,plot'legend' 参数仅接受布尔值或字符串 'reverse'

图例False/True/'reverse'
在轴子图上放置图例

它不接受图例位置字符串。剩余的**kwargs 被传递到底层matplotlib.pyplot 方法,该方法对应于指定的'kind' 参数(默认为matplotlib.pyplot.plot)。 没有这些方法允许通过它们的关键字参数定位图例。

因此,目前执行此操作的唯一方法是直接使用plt.legend() - 正如我在下面的原始答案中所述。


正如 cmets 所示,您必须使用 plt.legend(loc='lower left') 将图例放在左下方。即使使用pandas.DataFrame.plot - 也没有调整图例位置的参数,只有在绘制图例时。这是一个完整的例子来展示用法

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.random.random(100)

df = pd.DataFrame({'x': x, 'y':y})
df.plot(kind='scatter', x='x', y='y', label='Scatter')
plt.legend(loc='lower left')
plt.show()

【讨论】:

    【解决方案2】:

    好吧,简单地把它串起来。

    dframe.rank(ascending=False).plot(kind= 'bar').legend(loc='best')
    

    假设 'dframe' 是一个 DataFrame。

    【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 2017-08-07
    • 2014-06-23
    • 2019-10-20
    • 1970-01-01
    • 2015-02-23
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多