关于python 3.x:seaborn:计数图旋转并格式化到小数位

seaborn: countplot rotation and formatting to decimal places

我正在尝试同时旋转(45度)和缩小Seaborn中计数图的xticks(小数点后两位)。但是很遗憾,我无法使它正常工作。

这是我的代码:

1
2
3
4
5
6
7
8
9
10
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)

您可以在此处下载数据集。

这是结果:
enter


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

在任何情况下,您的问题都源于以下事实:它是一个分类图,因此每个刻度线都将一个类别表示为字符串,而不是如给定数据时所期望的浮点数。要修复数字的舍入,因此您需要提取那些字符串,将它们转换回数字,并在再次将它们转换回字符串时对其进行舍入...

1
2
3
4
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