使用 seaborne ScatterPlot 简化 y 轴值

Simplify y-axis values with seaborne ScatterPlot

我将以下 pandas 数据框绘制为 seaborn 散点图,但是默认的 y 轴非常混乱我还没有找到如何设置 y 轴的格式。

x = sns.scatterplot(data=plot_df, x='enroll_cnt', y='grad_pct', hue='nrc_desc')

您的 y-axis 条目现在是字符串,因为它们包含百分号。 Matplotlib 将字符串显示为分类类型。这意味着遇到的第一个字符串放在位置 0,下一个放在位置 1,等等。每次一个字符串第二次出现时,它都会被分配到它已经拥有的位置。这意味着,您的百分比是随机排列的。

如果您使用 x.set_yscale("linear"),您将看到这些位置,但看不到相关值。

解决方案是将 y-values 设为数字,并使用 PercentFormatter() 将数字刻度显示为百分比。注意它有一个参数xmax=来表示'100 %'对应的值,所以它可以直接使用原始值。另请注意,sns.scatterplot 的 return 值是一个 ax,这使得编写 ax = sns.scatterplot(...)ax.yaxis.set_major_formatter(PercentFormatter(100)) 更易读。

如果您没有直接创建数值的简单方法,您可以将字符串更改为值:

plot_df['grad_pct'] = [int(s[:-1]) for s in plot_df['grad_pct']]