From: Joe K. <jki...@wi...> - 2010-09-20 15:07:17
|
On Sun, Sep 19, 2010 at 10:40 PM, Kelson Zawack <zaw...@gi... > wrote: > Is there a way to put the legend for a graph inside the margin instead > of on the graph, in other words to put the legend where excel would? Look into either "figlegend<http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.figlegend>" or the "bbox_to_anchor" keyword argument to "legend". You can use either of these to place the legend outside of the axis boundaries. However, this won't resize the original axes. Sometimes, it's easier to just make a new, separate axis for the legend, and resize the original axis. This is easily done with the axes_grid toolkit. E.g.: import matplotlib.pyplot as plt from matplotlib import cm import numpy as np from mpl_toolkits.axes_grid1 import make_axes_locatable # Make some data data = np.random.random(10) x = np.arange(data.size) colors = cm.jet(x.astype(np.float) / x.size) names = [repr(i) for i in range(data.size)] # Basic bar plot fig = plt.figure() ax = fig.add_subplot(111) bars = ax.bar(x, data, color=colors) # Now make a new axis for the legend that takes up 10% of the width... divider = make_axes_locatable(ax) legend_ax = divider.append_axes('right', '10%') legend_ax.axis('off') # Now make the legend on the new axis legend_ax.legend(bars, names, mode='expand', frameon=False) plt.show() Hope that helps! -Joe |