【问题标题】:labels are printed when set_xticklabels called调用 set_xticklabels 时打印标签
【发布时间】: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 中提供,但仍然没有运气。

提前致谢:)

【问题讨论】:

    标签: python pandas jupyter-notebook seaborn


    【解决方案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(...);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多