如何在matplotlib中旋转一个坐标轴的xticks而不“获取”标签作为列表

5
假设我有以下代码,它创建了一个带有两个轴的 matplotlib 图表,其中第二个轴的 x 轴标签是日期:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import datetime as dt    

x1 = np.arange(0,30)
x2 = pd.date_range('1/1/2016', periods=30, freq='D')
y1 = np.random.randn(30)
y2 = np.random.randn(30)

%matplotlib inline
fig, ax = plt.subplots(1,2, figsize=(18,5))
ax[0].scatter(x1,y1)
ax[1].scatter(x2,y2)

在IPython笔记本中显示此内容会导致图表右侧的x轴标签相互重叠。为了提高可视性,我想要旋转标签。所有文档和在线搜索似乎都建议以下两个选项之一(在上面的最后一行之后): #1
plt.setp(ax[1].xaxis.get_majorticklabels(),rotation=90,horizontalalignment='right')

或者 #2
plt.xticks(rotation=90)

这两种方法都可以实现旋转/显示,但会输出标签列表(在第一个示例中与第二个示例不同)。

如何完成旋转/显示而又不输出数组?


这与ipython笔记本设置有关,我猜测。您尝试过使用%%capture作为魔术引号吗? - ImportanceOfBeingErnest
3个回答

9

我能够使用这种方法。不确定它是否是最优雅的方式,但它可以在不输出数组的情况下工作。

for tick in ax[1].get_xticklabels():
    tick.set_rotation(90)

7
在Jupyter中,您也可以在命令的末尾加上分号,以抑制输出。这对于绘制图形而不打印返回数据非常方便:
plt.xticks(rotation=90);

0
有点晚了,仅供参考:
Jupyter笔记本总是打印出单元格中最后一个命令的返回值。 我建议添加另一个不返回任何内容的函数或语句来抑制此行为,而不是寻找实际要调用的函数的解决方法。
因此,您可以这样做:
plt.xticks(rotation=90)
pass

或者:

plt.xticks(rotation=90)
plt.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接