Seaborn 箱线图图例问题

问题描述 投票:0回答:1

我使用seaborn绘制了一个箱线图。

import seaborn as sns
sns.set(rc={'figure.figsize':(4,10)})
sns.set_theme(style="whitegrid")
plt.rcParams["font.family"] = "Calibri"  
my_pal = {"Track_Angle_Ctrl": "limegreen", "Track_Angle_KO": "#FF4500"}
ax = sns.boxplot(data = Track_Angle, palette = my_pal, linewidth=2.5)
plt.title('TRACK ANGLE BOX PLOT DISTRIBUTION',fontsize = "20", pad = 20, fontweight = "bold")
plt.xlabel("TRACKS", fontsize = "20", labelpad = 20)
plt.ylabel("TRACK ANGLE IN DEGREES", fontsize = "20", labelpad = 20)
plt.tick_params(axis='x', labelsize=18)
plt.tick_params(axis='y', labelsize=18)
ax.set_xticklabels(['Ctrl','Knock-Out'])
plt.legend(labels= ["Ctrl", "Knock-out"], fontsize = 18, loc = (1.04,0.85))
plt.grid(True)

由于某种原因,右上角的图例无法正确显示标签。正如您在图例中看到的,对于 Ctrl 键,该框显示正确,但对于 Knock-out,则不正确。

样品:

sns.set(rc={'figure.figsize':(8,10)})
sns.set_theme(style="ticks")

tips = sns.load_dataset("tips")
ax = sns.boxplot(x="day", y="total_bill", data=tips)
plt.title('TRACK ANGLE BOX PLOT DISTRIBUTION',fontsize = "20", pad = 20, 
fontweight = "bold")
plt.xlabel("TRACKS", fontsize = "20", labelpad = 20)
plt.ylabel("TRACK ANGLE IN DEGREES", fontsize = "20", labelpad = 20)
plt.tick_params(axis='x', labelsize=18)
plt.tick_params(axis='y', labelsize=18)
ax.set_xticklabels(['1','2','3','4'])
plt.legend(labels= ["1", "2","3","4"], fontsize = 18, loc = (1.44,0.85))
plt.grid(True)

为什么这里也只有第一个图例显示方框,其余三个图例只显示一行。我需要每个标签 1、2、3、4 都有图例中的框

python matplotlib seaborn legend boxplot
1个回答
0
投票

添加色调对我有用

import seaborn as sns
import matplotlib as plt

df = sns.load_dataset('tips')
df.head()

sns.set(rc={'figure.figsize':(4,10)})
sns.set_theme(style="whitegrid")
ax = sns.boxplot(data = df, x = "sex", y = "total_bill", hue = "sex", linewidth=2.5)

ax.legend(bbox_to_anchor=(1.05, 0), loc='lower left', borderaxespad=0)

boxplot

© www.soinside.com 2019 - 2024. All rights reserved.