Mec*_*nic 3 python matplotlib seaborn
我正在使用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()
Run Code Online (Sandbox Code Playgroud)
这导致我在上图中.正如您所看到的那样,勾选标签太长而无法排成一行.因此,我计划在xticklabels上使用textwrap来跨越多行.为了获得标签,我尝试使用
g.xaxis.get_ticklabels()
Run Code Online (Sandbox Code Playgroud)
返回以下内容
<a list of 9 Text major ticklabel objects>
Run Code Online (Sandbox Code Playgroud)
如果我在这样的循环中尝试它
for item in g.xaxis.get_ticklabels():
print(item)
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
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')
Run Code Online (Sandbox Code Playgroud)
有没有办法在seaborn中使用默认函数/方法更有效地完成它.
Imp*_*est 11
有一个matplotlib轴实例ax(因为它是例如由seaborn图返回),
ax = sns.boxplot(...)
Run Code Online (Sandbox Code Playgroud)
允许获得ticklabels作为
ax.get_xticklabels()
Run Code Online (Sandbox Code Playgroud)
将文本从列表中删除的最简单方法是
texts = [t.get_text() for t in ax.get_xticklabels()]
Run Code Online (Sandbox Code Playgroud)
包装文本也可以在运行中完成
texts = [textwrap.fill(t.get_text(), 10) for t in ax.get_xticklabels()]
Run Code Online (Sandbox Code Playgroud)
甚至将文本设置为ticklabels也可以在同一行中完成
ax.set_xticklabels([textwrap.fill(t.get_text(), 10) for t in ax.get_xticklabels()])
Run Code Online (Sandbox Code Playgroud)