我很难把原来的传说从Relplot中删除。因为我想改变图例中的文本,所以我添加了一些代码来覆盖这个图例,现在我想去掉原来的那个。但是,我不能编写legend = False,因为如果是这样的话,它也不会给出附加的传奇。有什么建议吗?
sns.relplot(data = df_R_subject1, x="CDL-07_CO2", y="CDL-07_Ta", size="freshair_S1", hue="posture_S1",
sizes=(200, 50), alpha=.5, palette="muted", height=6)
L = plt.legend(bbox_to_anchor = (1,0.35), frameon=False)
L.get_texts()[0].set_text('Posture')
L.get_texts()[1].set_text('Standing')
L.get_texts()[2].set_text('Sitting')
L.get_texts()[3].set_text('Do you need fresh air?')
L.get_texts()[4].set_text('Yes')
L.get_texts()[5].set_text('No change')
plt.ylabel("Air temperature (°C)", fontsize = 12)
plt.xlabel("CO2 concentration (ppm)", fontsize = 12)
plt.show()例子情节:

我怎样才能摆脱传奇(右侧)?
发布于 2022-09-28 11:53:28
关系图是一个图形级函数,当您使用plt.legend()时,这将导致创建第二个图例。您应该使用L= g._legend代替。下面是完整代码。未提供数据时使用的提示数据..。
import seaborn as sns
import matplotlib.pyplot as plt
df_R_subject1 = sns.load_dataset("tips")
df_R_subject1.rename(columns={'total_bill': 'CDL-07_Ta', 'tip' : 'CDL-07_CO2', 'sex':'posture_S1', 'time':'freshair_S1'}, inplace=True)
g=sns.relplot(data = df_R_subject1, x="CDL-07_CO2", y="CDL-07_Ta", size="freshair_S1", hue="posture_S1",
sizes=(200, 50), alpha=.5, palette="muted")
L= g._legend
L.get_texts()[0].set_text('Posture')
L.get_texts()[1].set_text('Standing')
L.get_texts()[2].set_text('Sitting')
L.get_texts()[3].set_text('Do you need fresh air?')
L.get_texts()[4].set_text('Yes')
L.get_texts()[5].set_text('No change')
plt.ylabel("Air temperature (°C)", fontsize = 12)
plt.xlabel("CO2 concentration (ppm)", fontsize = 12)
plt.show()

https://stackoverflow.com/questions/73878698
复制相似问题