要使用 Seaborn 库使散点图中的色相比例为对数,您可以使用 set() 方法并将 colorscale 参数设置为“log”:
sns.scatterplot(
x=df.x,
y=df.y,
hue=df.z
).set(colorscale='log')
这将使图中的颜色分布更均匀,这有助于揭示数据中的模式,这些模式可能无法通过线性比例立即显现出来。
为防止图例以科学记数法显示大量数字,您可以在创建绘图时使用 tickformat 参数。此参数允许您使用与 Python 中的 str.format() 方法相同的语法为刻度标签指定自定义格式字符串。例如,要禁止科学计数,显示所有带两位小数的数字,可以使用如下代码:
sns.scatterplot(
x=df.x,
y=df.y,
hue=df.z
).set(colorscale='log',
tickformat='.2f')
这将导致图例显示带有两位小数的数字,而不是对大数字使用科学记数法。
请注意,tickformat 参数仅在色相轴为数字时有效。如果色调值是分类的,则可以使用 hue_norm 参数指定归一化函数,并使用 hue_order 参数指定绘制类别的顺序。然后,您可以使用 legend_out 参数将图例移到绘图区域之外,这有助于防止过度拥挤。例如:
sns.scatterplot(
x=df.x,
y=df.y,
hue=df.z,
hue_norm=(0, 2**10),
hue_order=list(range(0, 2**10, 2**8)),
legend_out=True
).set(colorscale='log')
这将在对数刻度上绘制色调值,标准化范围为 0 到 1024,类别的顺序固定。图例将放置在绘图区域之外,并且将显示没有科学记数法的色调值。您可以根据需要调整参数以自定义图的外观。