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

时间:2018-03-26 12:52:08

标签: 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])

1 个答案:

答案 0 :(得分:3)

您可以向图例添加项目,如(现已删除)副本中所示。请注意,要在图例中没有颜色,您必须设置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

相关问题