python - 如何将没有符号/颜色的图例条目添加到现有图例中?

标签 python python-3.x matplotlib plot legend

我有一个带有传说的情节。我想在图例框中添加一个条目。此条目可能类似于拟合参数或其他描述数据的内容。

举个例子,可以使用下面的代码

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()

生成下面的图

enter image description here

我想要一个标签 "extra label" 只有空格没有符号。我尝试将 linestylemarkercolor kwargs 更改为 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')

并从 plt.legend()

修改这个实例
plt.legend(handles=[nan_patch])

最佳答案

您可以将项目添加到图例,如(现已删除)副本中所示。请注意,要在图例本身中没有颜色,您必须设置 color="none",例如

empty_patch = mpatches.Patch(color='none', label='Extra label') 
plt.legend(handles=[empty_patch])

为了拥有这个以及您现有的图例条目,您可以获得现有图例句柄和标签的列表,向其中添加额外的,然后绘制图例:

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()

给出:

enter image description here

关于python - 如何将没有符号/颜色的图例条目添加到现有图例中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49491942/

相关文章:

python - 如何向 Seaborn 箱线图添加标题

python - 你能对 Django 查询集中的聚合值做额外的数学运算吗

python - 空列表、元组、字典如何分配内存?

python - 避免重复 str.format 的参数?

python - 标准化具有多个零的像素输入数据

python - NetworkX 中的二分图

python - Django:在测试客户端上设置 cookie?

python - 拉格朗日乘子与 scipy.optimize.linprog

c++ - 通过 SWIG 从 Python 访问 UtcTimeStamp

python - 如何优化我的代码,以便能够使用循环在子图中绘制直方图?