Python 3.x seaborn:将绘图旋转和格式设置为小数位

Python 3.x seaborn:将绘图旋转和格式设置为小数位,python-3.x,matplotlib,seaborn,Python 3.x,Matplotlib,Seaborn,我试图在seaborn中旋转(45度)并缩小计数图的X刻度(小数点后2位)。但不幸的是我不能让它工作 这是我的代码: 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

我试图在seaborn中旋转(45度)并缩小计数图的X刻度(小数点后2位)。但不幸的是我不能让它工作

这是我的代码:

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)
您可以下载数据集

这就是结果:


正如您所看到的,旋转是有效的,但格式设置是无效的

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

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

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)

您在此处不提供服务。但我会假设
countplot
会覆盖您设置的格式设置器。@importantanceofbeingernest-它现在是可复制的。我认为不需要winequality数据来复制它。数据并不重要(只是在课程之后),你是对的,在这里使用countplot可能没有意义。我只是注意到格式化程序开始从0到102对它们进行计数。这不是我想要的,我想把小数点改成两位数。你说得对,我没有注意到不同的数字。这是因为它是一个分类图,所以标签可能是字符串,当您更改格式化程序时,这些字符串被底层的记号位置替换。稍后我会再次尝试。我已经用一个解决方案修改了我的答案,希望这次能真正起作用