Sha*_*ane 28 python legend pandas
我有一只熊猫DataFrame,我想绘制一个包含图例的条形图.
import pylab as pl
from pandas import *
x = DataFrame({"Alpha": Series({1: 1, 2: 3, 3:2.5}), "Beta": Series({1: 2, 2: 2, 3:3.5})})
Run Code Online (Sandbox Code Playgroud)
如果我直接调用plot,那么它将图例放在图上方:
x.plot(kind="bar")
Run Code Online (Sandbox Code Playgroud)
如果我在图中转换图例并尝试稍后添加它,那么它不会保留与DataFrame中两列相关联的颜色(参见下文):
x.plot(kind="bar", legend=False)
l = pl.legend(('Alpha','Beta'), loc='best')
Run Code Online (Sandbox Code Playgroud)
在Pandas DataFrame的matplotlib图中包含图例的正确方法是什么?

Pio*_*dal 43
最简洁的方法是:
x.plot(kind="bar").legend(bbox_to_anchor=(1.2, 0.5))
Run Code Online (Sandbox Code Playgroud)
或者一般而言
x.plot(kind="bar").legend(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
Wes*_*ney 26
如果要手动添加图例,则必须向子图询问条形图的元素:
In [17]: ax = x.plot(kind='bar', legend=False)
In [18]: patches, labels = ax.get_legend_handles_labels()
In [19]: ax.legend(patches, labels, loc='best')
Out[19]: <matplotlib.legend.Legend at 0x10b292ad0>
Run Code Online (Sandbox Code Playgroud)
此外,plt.legend(loc='best')或者ax.legend(loc='best')应该"正常工作",因为在绘图时已经设置了条形图补丁的"链接",因此您不必传递轴标签列表.
我不确定你正在使用的pandas版本是否返回了子图(ax = ...)的句柄,但我相当确定0.7.3会这样做.你可以随时获得它的引用plt.gca().
| 归档时间: |
|
| 查看次数: |
47524 次 |
| 最近记录: |