python 海运箱形图:获取xtick标签

23c0lvtd  于 2023-04-04  发布在  Python
关注(0)|答案(3)|浏览(159)

我正在使用Seaborn使用来自Pandas数据框的数据制作箱线图。

colorpalette = sns.hls_palette(8,h=.9)
g = sns.boxplot(x="estimator", y="mean_score", data=dFrame, palette=colorpalette)

g.set(ylabel='Mean Accuracy', xlabel='')
plt.show()

这导致我在上一个图中。正如你所看到的,ticklabels太长了,不能在一行中。所以,我计划在xticklabels上使用textwrap来跨越多行。为了获得标签,我尝试使用

g.xaxis.get_ticklabels()

返回以下内容

<a list of 9 Text major ticklabel objects>

如果我这样循环

for item in g.xaxis.get_ticklabels():
    print(item)

得到以下输出

Text(0,0,'ExtraTreesClassifier')
Text(1,0,'RandomForestClassifier')
Text(2,0,'GradientBoostingClassifier')
Text(3,0,'LogisticRegression')
Text(4,0,'DecisionTreeClassifier')
Text(5,0,'kNearestNeighbors')
Text(6,0,'LinearSVC')
Text(7,0,'Perceptron')

有没有一种方法可以更有效地使用seaborn中的默认函数/方法。

fae0ux8s

fae0ux8s1#

接受的答案对我不起作用(有这样的消息:“FacetGrid”对象没有属性“get_xticklabels”。
但这个很管用

g.fig.autofmt_xdate()
jyztefdp

jyztefdp2#

您可以旋转标签,并在底部添加页边距,而不是扭曲文本

plt.xticks(rotation=60, ha='right')
plt.subplots_adjust(bottom=0.3)
bihw5rsg

bihw5rsg3#

有一个matplotlib axes示例ax(例如,seaborn plots返回的),

ax = sns.boxplot(...)

允许获取ticklabels作为

ax.get_xticklabels()

从列表中删除文本的最简单方法是

texts = [t.get_text()  for t in ax.get_xticklabels()]

Package 的文字也可以这样做的飞行

texts = [textwrap.fill(t.get_text(), 10)  for t in ax.get_xticklabels()]

甚至将文本设置回ticklabels也可以在同一行中完成

ax.set_xticklabels([textwrap.fill(t.get_text(), 10)  for t in ax.get_xticklabels()])

相关问题