我正在尝试同时旋转(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。
如您所见,轮换有效,但格式无效。
答案 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)