4 python plot matplotlib legend python-3.x
我有一个有传奇的情节。我想在图例框中添加一个条目。该条目可能类似于拟合参数或其他描述数据的内容。
作为示例,可以使用下面的代码
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 101)
y = np.sin(x)
plt.plot(x, y, color='r', label='y = sin(x)')
plt.plot(np.NaN, np.NaN, color='k', label='extra label')
plt.plot(np.NaN, np.NaN, color='b', linestyle=None, label='linestyle = None')
plt.plot(np.NaN, np.NaN, color='orange', marker=None, label='marker = None')
plt.plot(np.NaN, np.NaN, color=None, label='color = None')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
生成下面的图
我想要一个"extra label"只有空格而没有符号的标签。我尝试将linestyle、marker和colorkwargs 更改为None但没有成功。我也尝试过用绘图plt.plot([], [])代替绘图plt.plot(np.NaN, np.NaN)。我想一些 hacky 解决方法是更改color='k'为color='white'. 但我希望有一种更合适的方法来做到这一点。我怎样才能做到这一点?
编辑
我的问题不是重复的。被指责为重复的帖子显示了另一种制作图例标签的方法,但不适用于没有符号的标签。人们可以运行下面的代码来测试,因为我原来的问题也适用。
import matplotlib.patches as mpatches
nan_patch = mpatches.Patch(color=None, label='The label for no data')
Run Code Online (Sandbox Code Playgroud)
并修改此实例plt.legend()
plt.legend(handles=[nan_patch])
Run Code Online (Sandbox Code Playgroud)
您可以将项目添加到图例中,如(现已删除)副本中所示。请注意,要在图例本身中没有颜色,您必须设置color="none",例如
empty_patch = mpatches.Patch(color='none', label='Extra label')
plt.legend(handles=[empty_patch])
Run Code Online (Sandbox Code Playgroud)
为了拥有这个以及现有的图例条目,您可以获取现有图例句柄和标签的列表,向其中添加额外的句柄和标签,然后绘制图例:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
x = np.linspace(0, 2*np.pi, 101)
y = np.sin(x)
plt.plot(x, y, color='r', label='y = sin(x)')
handles, labels = plt.gca().get_legend_handles_labels() # get existing handles and labels
empty_patch = mpatches.Patch(color='none', label='Extra label') # create a patch with no color
handles.append(empty_patch) # add new patches and labels to list
labels.append("Extra label")
plt.legend(handles, labels) # apply new handles and labels to plot
plt.show()
Run Code Online (Sandbox Code Playgroud)
这使:
| 归档时间: |
|
| 查看次数: |
5322 次 |
| 最近记录: |