Python Seaborn Relplot 科学计数法

Python Seaborn Relplot Scientific notation

我有一个seaborn replot。我想显示科学记数法。目前图像在 x 和 y 刻度上占据了很大的 space。我想通过将轴转换为科学记数法来最小化它。

我的代码:

sns.relplot(x='Vmpp',y='cVmpp',data=cdf)

我的解决方案和当前输出:

#I tried a solution reported for the seaborn heatmap. It did produce a plot (I think heat plot?) but did not work. 
sns.relplot(x='Vmpp',y='cVmpp',data=cdf,fmt='.2g')

当前输出:

AttributeError: 'PathCollection' object has no property 'fmt'

sns.relplot() is a figure-level function. If you just need the simple scatter plot, you may want to use sns.scatterplot() 代替。

无论如何,您都可以使用通常的 matplotlib 方式微调绘图。特别是,可以使用 ax.ticklabel_format(axis='both', style='scientific', scilimits=(0, 0)).

强制任何刻度标签数字的科学记数法

我还建议设置 alpha 值,因为您有很多重叠点。这是一个完整的例子:

import matplotlib.pyplot as plt
import seaborn as sns

sns.set()
titanic = sns.load_dataset('titanic')

fig, ax = plt.subplots()
ax.ticklabel_format(axis='both', style='scientific', scilimits=(0, 0))
sns.scatterplot(x='age', y='fare', data=titanic, alpha=0.5);

编辑: 正如@mwaskom 指出的那样,您也可以使用 sns.relplot() 以这种方式更改刻度标签,在这种情况下,只需在格式化程序之前调用绘图函数即可。您不需要指定坐标轴,因为 ticklabel_format() 也可以通过 matplotlib.pyplot 接口工作:

# [...] imports and data as above 

sns.relplot(x='age', y='fare', data=titanic, alpha=0.5)
plt.ticklabel_format(axis='both', style='scientific', scilimits=(0, 0));