我将一些数据绘制成由直线连接的误差条,正如你从picture中看到的那样。我只想显示图例中的标记(我不想显示标记中间的线)。我不想删除图表中的线,只想删除图例中的线。我试过下面的代码从这个thread:
handles, labels = ax.get_legend_handles_labels() for h in handles: h.set_linestyle("") ax.legend(handles, labels)
它也从图表中删除了线条。有办法吗?
o2gm4chl1#
正在更新...有一个特定的选项来执行此操作...
import numpy as np import matplotlib.pyplot as plt # dummy data x = np.arange(10) y1 = 2*x y2 = 3*x fig, ax = plt.subplots() line1, = ax.plot(x, y1, c='blue', marker='x') line2, = ax.plot(x, y2, c='red', marker='o') ax.legend([line1, line2], ['data1', 'data2'], handlelength=0.) plt.show()
46qrfjad2#
您可以使用matplotlib.rcParams['legend.handlelength'] = 0,而不是绘制两次图形(这可能会带来一些开销)。这是一个全局参数,这意味着它会影响所有其他图形。
matplotlib.rcParams['legend.handlelength'] = 0
import matplotlib.pyplot as plt import matplotlib import numpy as np matplotlib.rcParams['legend.handlelength'] = 0 x = np.linspace(-np.pi/2, np.pi/2, 31) y = np.cos(x)**3 # 1) remove points where y > 0.7 x2 = x[y <= 0.7] y2 = y[y <= 0.7] # 2) mask points where y > 0.7 y3 = np.ma.masked_where(y > 0.7, y) # 3) set to NaN where y > 0.7 y4 = y.copy() y4[y3 > 0.7] = np.nan plt.plot(x*0.1, y, 'o-', color='lightgrey', label='No mask') plt.plot(x2*0.4, y2, 'o-', label='Points removed') plt.plot(x*0.7, y3, 'o-', label='Masked values') plt.plot(x*1.0, y4, 'o-', label='NaN values') plt.legend() plt.title('Masked and NaN data') plt.show()
如果你只想将它用于一个图,你可以用下面的代码来 Package 这个图:with plt.rc_context({"legend.handlelength": 0,}):编辑:另一个答案对每个图形图例有一个更好的解决方案。
with plt.rc_context({"legend.handlelength": 0,}):
2条答案
按热度按时间o2gm4chl1#
正在更新...有一个特定的选项来执行此操作...
46qrfjad2#
您可以使用
matplotlib.rcParams['legend.handlelength'] = 0
,而不是绘制两次图形(这可能会带来一些开销)。这是一个全局参数,这意味着它会影响所有其他图形。如果你只想将它用于一个图,你可以用下面的代码来 Package 这个图:
with plt.rc_context({"legend.handlelength": 0,}):
编辑:另一个答案对每个图形图例有一个更好的解决方案。