[英]Pandas bar plot with specific colors and legend location?
我有一个 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})})
如果我直接调用绘图,那么它会将图例放在绘图上方:
x.plot(kind="bar")
如果我关闭图中的图例并稍后尝试添加它,那么它不会保留与 DataFrame 中两列关联的颜色(见下文):
x.plot(kind="bar", legend=False)
l = pl.legend(('Alpha','Beta'), loc='best')
在 Pandas DataFrame 的 matplotlib 图中包含图例的正确方法是什么?
最简洁的方法是:
x.plot(kind="bar").legend(bbox_to_anchor=(1.2, 0.5))
或者一般来说
x.plot(kind="bar").legend(*args, **kwargs)
如果要手动添加图例,则必须向子图询问条形图的元素:
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>
此外, plt.legend(loc='best')
或ax.legend(loc='best')
应该“正常工作”,因为在制作绘图时已经设置了条形图补丁的“链接”,所以您不必传递轴标签列表。
我不确定您使用的 pandas 版本是否会返回子图的句柄 ( ax =...
),但我相当确定 0.7.3 会返回子图的句柄。 您始终可以使用plt.gca()
获得对它的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.