繁体   English   中英

传奇人物头衔位置

[英]seaborn legend title position

我想绘制一个带有seaborn的图形,但是,我的图形的图例标题名称始终与其他图例名称位于同一行,例如:

在此处输入图片说明

我使用的代码是这样的:

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

我想将图例标题放在图例区域的中心,有人知道如何解决此问题吗? 谢谢!

当然,您可以通过删除假标题条目并添加真实标题来调整图例。 最后,这比仅使用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()

导致

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM