我正在使用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中的默认函数/方法。
3条答案
按热度按时间fae0ux8s1#
接受的答案对我不起作用(有这样的消息:“FacetGrid”对象没有属性“get_xticklabels”。
但这个很管用
jyztefdp2#
您可以旋转标签,并在底部添加页边距,而不是扭曲文本
bihw5rsg3#
有一个matplotlib axes示例
ax
(例如,seaborn plots返回的),允许获取ticklabels作为
从列表中删除文本的最简单方法是
Package 的文字也可以这样做的飞行
甚至将文本设置回ticklabels也可以在同一行中完成