Pandas bar plot with specific colors and legend location?

后端 未结 2 1272
终归单人心
终归单人心 2020-12-24 13:23

I have a pandas DataFrame and I want to plot a bar chart that includes a legend.

import pylab as pl
from pandas import *

x = DataFrame({\"Alpha         


        
相关标签:
2条回答
  • 2020-12-24 13:54

    If you want to add the legend manually, you have to ask the subplot for the elements of the bar plot:

    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>
    

    Also, plt.legend(loc='best') or ax.legend(loc='best') should "just work", because there are already "links" to the bar plot patches set up when the plot is made, so you don't have to pass a list of axis labels.

    I'm not sure if the version of pandas you're using returns a handle to the subplot (ax = ...) but I'm fairly certain that 0.7.3 does. You can always get a reference to it with plt.gca().

    0 讨论(0)
  • 2020-12-24 14:04

    The most succinct way to go is:

    x.plot(kind="bar").legend(bbox_to_anchor=(1.2, 0.5))
    

    or in general

    x.plot(kind="bar").legend(*args, **kwargs)
    
    0 讨论(0)
提交回复
热议问题