设置熊猫图的图例位置

Dan*_*ima 12 python plot matplotlib legend-properties pandas

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

有谁知道怎么做?

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

Wil*_*ler 15

编辑

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

传说假/真/'反向'
?? 在轴子图上放置图例

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

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


正如评论所示,您必须使用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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


小智 13

好吧,简单地链接它。

dframe.rank(ascending=False).plot(kind= 'bar').legend(loc='best')
Run Code Online (Sandbox Code Playgroud)

假设 'dframe' 是一个 DataFrame。

  • 不适用于 pandas 1.3.5。尝试 df.plot().legend() 时出现“AttributeError:'numpy.ndarray'对象没有属性'legend'” (5认同)
  • ```.legend``` 的文档位于 https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html (4认同)

小智 8

使用 pandas 1.5.3,您可以将 legend() 链接到plot() 后面,请参阅matplotlib

例子:

matched.set_index(
    matched.index.date
).plot(kind='barh', stacked=True
).legend(
    bbox_to_anchor=(1.0, 1.0),
    fontsize='small',
);
Run Code Online (Sandbox Code Playgroud)

Jupyter 单元格截图