在seaborn boxplot中防止科学记数法

Posted

技术标签:

【中文标题】在seaborn boxplot中防止科学记数法【英文标题】:Prevent scientific notation in seaborn boxplot 【发布时间】:2016-02-21 15:22:44 【问题描述】:

我正在使用 pandas 0.17.0 版、matplotlib 1.4.3 版和 seaborn 0.6.0 版来创建箱线图。我想要浮点表示法中的 x 轴上的所有值。目前,两个最小值(0,00001 和 0,00005)以科学计数法格式化。

这是我用来绘制图像的代码:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

data = pd.read_csv("resultsFinal2.csv")

boxplot = sns.boxplot(x="Regularisierungsparameter", y="F1", data=data.sort("Regularisierungsparameter"))

plt.show()

按照How to prevent numbers being changed to exponential form in Python matplotlib figure 的建议,我试过了:

boxplot = sns.boxplot(x="Regularisierungsparameter", y="F1", data=data.sort("Regularisierungsparameter"))
ax = plt.gca()
ax.get_xaxis().get_major_formatter().set_scientific(False)

导致:

    plt.gca().get_xaxis().get_major_formatter().set_useOffset(False)
AttributeError: 'FixedFormatter' object has no attribute 'set_useOffset'

Seaborn Boxplot 文档说,我可以传递一个 Axes 对象来绘制绘图。所以我尝试创建一个禁用科学计数法的轴并将其传递给 sns.boxplot:

ax1 = plt.gca().get_xaxis().get_major_formatter().set_useOffset(False)
boxplot = sns.boxplot(x="Regularisierungsparameter", y="F1", data=data.sort("Regularisierungsparameter"), ax=ax1)

那也没用。谁能告诉我怎么做?

【问题讨论】:

您的链接已损坏。另外,请指定您使用的 matplotlib 版本(我的错误信息与您的不同) 【参考方案1】:

这可能是一个丑陋的解决方案,但它确实有效,所以谁在乎

fig, ax = plt.subplots(1, 1)
boxplot = sns.boxplot(x="Regularisierungsparameter", y="F1", data=data.sort("Regularisierungsparameter"), ax=ax)
labels = ['%.5f' % float(t.get_text()) for t in ax.get_xticklabels()]
ax.set_xticklabels(labels)

【讨论】:

以上是关于在seaborn boxplot中防止科学记数法的主要内容,如果未能解决你的问题,请参考以下文章

计算机科学速成科听课随笔5

机器学习数据预处理之离群值/异常值:箱图法(boxplot method)

在传单弹出窗口中防止科学记数法 - R

我做国家自科基金委评委的那几年-工作经历分享-转载

防止 matplotlib.pyplot 中的科学记数法[重复]

在EXCEL中怎样防止15位以上的数字变成科学计数法?