调用 set_xticklabels 时打印标签

Posted

技术标签:

【中文标题】调用 set_xticklabels 时打印标签【英文标题】:labels are printed when set_xticklabels called 【发布时间】:2019-09-28 05:56:07 【问题描述】:

问题:

在使用set_xticklabels 设置 x 轴标签的旋转时,所有标签都会被打印出来。

代码

winner_freq = pd.DataFrame(player_match.winner.value_counts().reset_index())
winner_freq_plot = sns.barplot(x='index', y='winner', data=winner_freq)
winner_freq_plot.set_xticklabels(winner_freq_plot.get_xticklabels(), rotation=90)

截图

我尝试过的修复

我不知道如何修复它并用谷歌搜索但没有答案,所以我将标签分别放在一个列表中并在 set_xticklabels 中提供,但仍然没有运气。

提前致谢:)

【问题讨论】:

【参考方案1】:

如果你只是使用 jupyter notebook

ax.set_xticklabels(...);

【讨论】:

【参考方案2】:

这并不是一个真正的错误,而是matplotlib 的一个特征,seaborn 使用了它。它的大多数函数返回的值在某种程度上代表了它们已执行的计算。

在这种情况下,set_xticklabels 修改了 刻度标签,这些标签是用 Text 对象绘制的。返回的是那些收集在list 中的Text 对象。

您认为“打印”的标签只是您的 Jupyter 笔记本,将 list 表示为文本。

如果您不希望看到这种情况,在单元格中最后一条语句的末尾使用分号以防止其输出。

或者,您可以将结果分配给一次性变量,如下所示:

_ = winner_freq_plot.set_xticklabels(winner_freq_plot.get_xticklabels(), rotation=90)

也就是说,请注意_ 通常绑定到最后一个返回值,您将通过这样做覆盖它。

另一种选择是简单地将pass 语句附加到您的代码中。由于 Jupyter 将呈现单元格中最后一条语句的返回值,而 pass 不返回任何内容,因此您不会得到任何输出。

【讨论】:

在单元格中最后一条语句的末尾使用分号以防止其输出。已经有很多问题和答案了,所以最好投票结束而不是再次回答。 @gmds 感谢您的帮助。它运作良好,ImportanceOfBeingErnest 的答案也非常简单,而且运作良好。 @ImportanceOfBeingErnest 不确定我是否遵循“最后一个单元格”。你能举个例子吗? ax.set_xticklabels(...);

以上是关于调用 set_xticklabels 时打印标签的主要内容,如果未能解决你的问题,请参考以下文章

如何用机器码在斑马打印机中打印出汉字

C#调用斑马打印机打印条码标签(支持COMLPTUSBTCP连接方式和ZPLEPLCPCL指令)

一次补打引起的思考

Delphi调用BarTender8.01打印条码标签

在动画中将 set_xticks 和 set_xticklabels 放在哪里以便正确标记而不会“闪烁”?

git命令之git tag 给当前分支打标签