我使用pandas版本0.17.0,matplotlib版本1.4.3和seaborn版本0.6.0创建一个boxplot。我希望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)
那也没有用。有人可以告诉我该怎么做吗?
答案 0 :(得分: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)