我使用pandas版本0.17.0、matplotlib版本1.4.3和seaborn版本0.6.0创建一个boxplot。我想在浮点数的x轴上的所有值。目前,最小的两个值(000001和000005)是用科学记数法格式化的。
下面是我用来绘制图像的代码:

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.BOXTICE:
ax1 = plt.gca().get_xaxis().get_major_formatter().set_useOffset(False)
boxplot = sns.boxplot(x="Regularisierungsparameter", y="F1", data=data.sort("Regularisierungsparameter"), ax=ax1)

那也没用。有人能告诉我怎么做吗?

最佳答案

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

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)

关于python - 防止海底箱图中的科学计数法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33804658/

10-11 07:40