Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- # make some data
- x = np.linspace(0, 2*np.pi)
- y1 = np.sin(x)
- y2 = np.cos(x)
- # plot sin(x) and cos(x)
- p1 = plt.plot(x, y1, 'b-', linewidth=1.0)
- p2 = plt.plot(x, y2, 'r-', linewidth=1.0)
- # make a legend for both plots
- leg = plt.legend([p1, p2], ['sin(x)', 'cos(x)'], loc=1)
- # set the linewidth of each legend object
- for legobj in leg.legendHandles:
- legobj.set_linewidth(2.0)
- plt.show()
- import matplotlib.pyplot as plt
- from matplotlib import legend_handler
- from matplotlib.lines import Line2D
- import numpy as np
- class MyHandlerLine2D(legend_handler.HandlerLine2D):
- def create_artists(self, legend, orig_handle,
- xdescent, ydescent, width, height, fontsize,
- trans):
- xdata, xdata_marker = self.get_xdata(legend, xdescent, ydescent,
- width, height, fontsize)
- ydata = ((height-ydescent)/2.)*np.ones(xdata.shape, float)
- legline = Line2D(xdata, ydata)
- self.update_prop(legline, orig_handle, legend)
- #legline.update_from(orig_handle)
- #legend._set_artist_props(legline) # after update
- #legline.set_clip_box(None)
- #legline.set_clip_path(None)
- legline.set_drawstyle('default')
- legline.set_marker("")
- legline.set_linewidth(10)
- legline_marker = Line2D(xdata_marker, ydata[:len(xdata_marker)])
- self.update_prop(legline_marker, orig_handle, legend)
- #legline_marker.update_from(orig_handle)
- #legend._set_artist_props(legline_marker)
- #legline_marker.set_clip_box(None)
- #legline_marker.set_clip_path(None)
- legline_marker.set_linestyle('None')
- if legend.markerscale != 1:
- newsz = legline_marker.get_markersize()*legend.markerscale
- legline_marker.set_markersize(newsz)
- # we don't want to add this to the return list because
- # the texts and handles are assumed to be in one-to-one
- # correpondence.
- legline._legmarker = legline_marker
- return [legline, legline_marker]
- plt.plot( [0, 1], [0, 1], '-r', lw=1, label='Line' )
- plt.legend(handler_map={Line2D:MyHandlerLine2D()})
- plt.show()
- import numpy as np
- import matplotlib.pyplot as plt
- # make some data
- x = np.linspace(0, 2*np.pi)
- y1 = np.sin(x)
- y2 = np.cos(x)
- fig, ax = plt.subplots()
- ax.plot(x, y1, linewidth=1.0, label='sin(x)')
- ax.plot(x, y2, linewidth=1.0, label='cos(x)')
- leg = ax.legend()
- for line in leg.get_lines():
- line.set_linewidth(4.0)
- plt.show()
Add Comment
Please, Sign In to add comment