seaborn legend标题位置

2024-05-15 21:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用seaborn绘制一个图,但是,我的图的图例标题名称始终与其他图例名称保持在同一行中,例如:

enter image description here

我使用的代码如下:

test = pd.read_csv('test.csv')
ax = sns.lineplot(x='hour',y='travel_time',hue='Name',data=test)
ax.legend(shadow=True, fancybox=True, ncol = 2, fontsize = 14)

数据可通过以下途径获得:

https://knightsucfedu39751-my.sharepoint.com/:x:/g/personal/peili_knights_ucf_edu/ES8Y98bYZndNulxVKSsaHRgB67TYkAvg4uLwWszDiJvAzQ?e=oumJpK

我想把传奇标题放在传奇区域的中心,有人知道怎么解决这个问题吗?谢谢您!你知道吗


Tags: csv代码test名称true标题read绘制
1条回答
网友
1楼 · 发布于 2024-05-15 21:24:53

当然,您可以通过删除假标题条目并添加真实标题来调整图例。这最终会比仅仅使用matplotlib绘制线条图更麻烦,因为它提供了免费的居中标题。你知道吗

这将需要多出一行代码,可能看起来像

for n, grp in df.groupby("hue"):
    plt.plot("xData", "yData", data=grp, label=n)
plt.legend(shadow=True, fancybox=True, ncol = 2, title="Name")

为完整起见,请举一个可运行的示例:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame({"xData" : np.sort(np.cumsum(np.random.randn(10,10), axis=1), axis=1).flatten(),
                   "yData" : np.cumsum(np.random.randn(10,10), axis=1).flatten(),
                   "hue" : np.array([[f"Label {i+1}"]*10 for i in range(10)]).flatten()})

for n, grp in df.groupby("hue"):
    plt.plot("xData", "yData", data=grp, label=n)
plt.legend(shadow=True, fancybox=True, ncol = 2, title="Name")

plt.show()

导致

enter image description here

相关问题 更多 >