2016-09-27 22 views
2

假設我有下面的代碼創建一個帶有兩個軸的matplotlib圖形,其中第二個具有x軸標籤作爲日期:如何在matplotlib的圖形的一個軸上旋轉xticks而不將列表標籤作爲列表

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軸標籤,作爲彼此運行。我想旋轉標籤以提高可視性。所有的文檔和在線搜索中似乎暗示以下2個選項(二者均高於去年後):

#1

plt.setp(ax[1].xaxis.get_majorticklabels(),rotation=90,horizontalalignment='right') 

或#2

plt.xticks(rotation=90) 

其中任何一個都能正常工作,但也會打印標籤列表(由​​於某些原因,第一個示例與第二個示例不同)

我該如何在不輸出數組的情況下完成旋轉/顯示?

+0

這與IPython的筆記本電腦設置的事,我猜。你是否嘗試過使用'%% capture'作爲魔術引號? – ImportanceOfBeingErnest

回答

4

我能夠使用這種方法。不知道這是否是最優雅的方式,但它工作起來有點晚了輸出數組

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

,所以才以供將來參考:

Jupyter筆記本總是從最後的命令在打印的返回值一個小區。 我只是通過添加另一個不返回任何內容的函數或語句來取消這一點,而不是尋找您想要調用的實際函數的解決方法。

所以,你可以這樣做:

plt.xticks(rotation=90) 
pass 

或:

plt.xticks(rotation=90) 
plt.show() 
相關問題