gpt4 book ai didi

python - 如何将 R^2 值添加到 seaborn 条形图的图例中?

转载 作者:行者123 更新时间:2023-12-04 07:44:51 25 4
gpt4 key购买 nike

我有一个 seaborn 条形图和一条在其上绘制的回归线,看起来像 this .如您所见,我有一个使用 seaborn.barplot() 自动创建的图例,并且我正在尝试添加 R^2 分数:

g = sns.barplot(x='City/Town', y="Value", hue="Metric", data=df, ax=ax1)
h, l = g.get_legend_handles_labels()
g.legend(h + [lin_reg.score(X, Y)], l + ['R^2 score'], title="Legend")
它不会抛出错误,事实上我知道它正在工作,因为它将标题更改为“Legend”,但它也没有添加 R^2。

最佳答案

legend() 函数需要第一个参数中的句柄,我认为您不能将文本用作其中之一。您可以阅读更多 help page for matplotlib legend
我能想到的一个快速解决方案是为用于 R^2 的行制作一个空白矩形,下面是一个使用 iris 作为示例的示例:

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from sklearn.linear_model import LinearRegression

df = sns.load_dataset("iris")
lin_reg = LinearRegression().fit(df[['petal_length']], df['sepal_length'])
r2 = lin_reg.score(df[['petal_length']], df['sepal_length'])

blank = Rectangle((0, 0), 1, 1, fc="w", fill=False, edgecolor='none', linewidth=0)

fig, ax = plt.subplots(figsize=(10,5))
sns.scatterplot(x='sepal_width', y="sepal_length", hue="species", data=df, ax=ax)

h, l = ax.get_legend_handles_labels()
ax.legend(h + [blank], l + [f'R^2 score = {r2:.3f}'], title="Legend")
enter image description here
我注意到您有一个包含几个类别的条形图,所以我不确定您如何从中计算 R^2。无论如何,使用上面的代码,您应该能够添加 R^2

关于python - 如何将 R^2 值添加到 seaborn 条形图的图例中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67248189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com