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()
我正在尝试绘制以下数据框,然后旋转 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()