2017-06-13 82 views
2

我正在與seaborn繪製一系列盒狀圖的與節拍頻率使用seaborn/matplotlib當箱線圖

sns.boxplot(full_array) 

full_array其中含有200個陣列。 因此,我在x軸上有200個盒形圖和刻度,從0到200.

xticks太靠近彼此了,我想只顯示其中的一些,例如,標記的xtick每20 , 或者。

我嘗試了幾個解決方案,如here,但他們沒有工作。

每次我對xticks進行採樣時,我都會得到錯誤的ticks標籤,因爲它們的編號從0到N,單位間距。

例如,與線ax.xaxis.set_major_locator(ticker.MultipleLocator(20)) 我得到一個標記XTICK每20但標籤是1,2,3,4,而不是20,40,60,80 ...

由於任何人誰是如此善意幫助。

回答

3

的seaborn箱線圖使用FixedLocator和FixedFormatter,即

print ax.xaxis.get_major_locator() 
print ax.xaxis.get_major_formatter() 

打印

<matplotlib.ticker.FixedLocator object at 0x000000001FE0D668> 
<matplotlib.ticker.FixedFormatter object at 0x000000001FD67B00> 

它因此不足以將定位器設置爲MultipleLocator因爲蜱值仍然被設置由固定格式化器。

取而代之,您會想設置一個ScalarFormatter,它將tick標記設置爲與其位置上的數字相對應。

import matplotlib.pyplot as plt 
import matplotlib.ticker as ticker 
import seaborn.apionly as sns 
import numpy as np 

ax = sns.boxplot(data = np.random.rand(20,30)) 

ax.xaxis.set_major_locator(ticker.MultipleLocator(5)) 
ax.xaxis.set_major_formatter(ticker.ScalarFormatter()) 

plt.show() 

enter image description here

+0

非常感謝!這完美地解決了我的問題! – Michele

+0

如果x軸的數據類型爲String,該怎麼辦?您能否告訴我如何在這種情況下提供xticks的頻率? – weefwefwqg3

+0

@ weefwefwqg3請不要在其他問題的評論中提出新問題。如果此問答無法解決您的問題,請提出您有問題的[mcve]問題。 – ImportanceOfBeingErnest