seaborn:计数图旋转并格式化为小数位

时间:2019-08-10 11:48:37

标签: python-3.x matplotlib seaborn

我正在尝试同时旋转(45度)和缩小seaborn计数图的xticks(小数点后两位)。但是不幸的是我无法正常工作。

这是我的代码:

from matplotlib.ticker import FormatStrFormatter
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

wine_data = pd.read_csv('winequality-white.csv', sep=';')
fig, ax1 = plt.subplots(figsize=(15,5))
ax1.xaxis.set_tick_params(rotation=45)
ax1.xaxis.set_major_formatter(FormatStrFormatter('%.2f'))
sns.countplot(data=wine_data, x='alcohol', ax=ax1)

您可以下载数据集here

这是结果: enter image description here

如您所见,轮换有效,但格式无效。

1 个答案:

答案 0 :(得分:1)

您确定countplot()是适合您的数据的图表吗? countplot用于分类数据,而“酒精含量”是一个连续值。在我看来,您正在尝试绘制直方图,或者sns.distplot(),如果您真的想使用seaborn?

在任何情况下,您的问题均源于以下事实:它是分类图,因此每个刻度线都将一个类别表示为字符串,而不是如给定数据时所期望的浮点数。为了解决数字的四舍五入问题,因此您需要提取这些字符串,将它们转换回数字,然后在再次将它们转换为字符串时四舍五入...

fig, ax1 = plt.subplots(figsize=(10,4))
sns.countplot(data=wine_data, x='alcohol', ax=ax1)
ax1.set_xticklabels(['{:.2f}'.format(float(t.get_text())) for t in ax1.get_xticklabels()])
ax1.xaxis.set_tick_params(rotation=45)

enter image description here