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

las*_*lex 2 python matplotlib

假设我有以下代码,该代码创建一个带有两个轴的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)
Run Code Online (Sandbox Code Playgroud)

在ipython笔记本中显示此内容时,右侧的图形的x轴标签会彼此碰到。我想旋转标签以提高可见度。所有文档和在线搜索似乎都建议使用以下两个选项之一(均在上面的最后一行之后):

#1

plt.setp(ax[1].xaxis.get_majorticklabels(),rotation=90,horizontalalignment='right')
Run Code Online (Sandbox Code Playgroud)

或#2

plt.xticks(rotation=90)
Run Code Online (Sandbox Code Playgroud)

这些都可以使用,但也会打印标签列表(由​​于某些原因,第一个示例与第二个示例有所不同)

如何在不输出某些数组的情况下完成旋转/显示?

las*_*lex 5

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

for tick in ax[1].get_xticklabels():
    tick.set_rotation(90)
Run Code Online (Sandbox Code Playgroud)


Dam*_*ips 5

在 Jupyter 中,您也可以在命令的末尾加上一个分号,它会抑制输出。这对于在不打印返回数据的情况下绘制图形非常方便:

plt.xticks(rotation=90);
Run Code Online (Sandbox Code Playgroud)