繁体   English   中英

具有特定颜色和图例位置的熊猫条形图?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM