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));
我有一个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));