我正在使用Seaborn从数据框创建一个折线图,想要在图中添加一条水平线。这个目标已经实现了,但是我遇到了一个问题:无法将水平线添加到图例中。
以下是一个最小化的、可验证的示例:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x = np.array([2, 2, 4, 4])
y = np.array([5, 10, 10, 15])
isBool = np.array([True, False, True, False])
data = pd.DataFrame(np.column_stack((x, y, isBool)), columns=["x", "y", "someBoolean"])
print(data)
ax = sns.lineplot(x="x", y="y", hue="someBoolean", data=data)
plt.axhline(y=7, c='red', linestyle='dashed', label="horizontal")
plt.legend(("some name", "some other name", "horizontal"))
plt.show()
这导致了以下的图表:
“some name”和“some other name”的图例显示正确,但是“horizontal”的图例为空白。我尝试只使用plt.legend()
,但图例包含数据集中似乎是随机的值。
有什么想法吗?