Matplotlib:不知道 x 轴值变量时旋转 x 轴刻度标签

Matplotlib: Rotate x-axis tick labels when don't know x-axis value variable

我正在尝试绘制以下数据框,然后旋转 x 轴标签

index   label_h1    label_h2    label_h3    
d1  1.2     2.00    0.0     
d2  5.3     4.00    0.2 
d3  7.00    145.00  4.00    

剧情代码:

plt.figure(figsize=(13,10), dpi= 80)
sns.boxplot(data=df)
plt.yscale("log") 
plt.show()

如果我尝试旋转标签

fig, ax = plt.subplots(1,1)
ax.set_xticklabels(df.columns,rotation = 90)

我收到错误:

UserWarning: FixedFormatter should only be used together with FixedLocator
  ax.set_xticklabels(df_corr.columns,rotation = 90)

如何在绘制矩阵时旋转标签?

当您使用 df_corr.columns 设置 x 刻度标签时,您正在使用数据的列,它们是 4('index''label_h1''label_h2''label_h3' ),只有三个框,所以你应该丢弃 'index' 列:

ax.set_xticklabels([label for label in df.columns if label != 'index'],rotation = 90)

或者,正如 Jody Klymak 在下面的评论中所解释的那样,您可以使用更简单的方法:

ax.tick_params(which='major', labelrotation=90)

完整代码

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv(r'data/data.csv')


fig, ax = plt.subplots(1,1, figsize=(13,10), dpi= 80)

sns.boxplot(data=df, ax = ax)

ax.tick_params(which='major', labelrotation=90)
ax.set_yscale("log") 

plt.show()