2015-11-21 73 views
0

Here顯示瞭如何使用labels = TRUE標記具有數據值或百分比的直方圖條。是否也可以旋轉這些標籤?我的目標是將它們旋轉到90度,因爲現在條形標籤相互覆蓋並且不可讀。 PS:請注意,我的目標不是旋轉Y軸標籤,如圖所示。 here旋轉直方圖條的標籤 - 顯示如下:labels = TRUE

+1

@jeremycg這不是上述問題的重複。這個問題問如何旋轉每個欄的標籤。鏈接的問題詢問如何旋轉y軸標籤。 –

+0

我的猜測是你需要自己繪製文本標籤(使用'text(...,srt = 90)')。它可能有助於知道'hist(...)'提供的輸出可以告訴你每個小節的「mids」。 – r2evans

回答

2

使用mtcars,這裏有一個蠻力解決方案(雖然不是很粗野):

h <- hist(mtcars$mpg) 
maxh <- max(h$counts) 
strh <- strheight('W') 
strw <- strwidth(max(h$counts)) 
hist(mtcars$mpg, ylim=c(0, maxh + strh + strw)) 
text(h$mids, strh + h$counts, labels=h$counts, adj=c(0, 0.5), srt=90) 

srt=90是這裏的關鍵,90度逆時針旋轉(逆時針?) 。

maxhstrh,和strw用於(1)確定多少延長y軸,以使文本不會夾在可見圖中,和(2),以提供巴之間的小墊和旋轉文本的開始。 (第一個原因可以通過xpd=TRUE減輕代替,但它威力撞擊在主標題,如果你的上邊距設置爲0,將是一個因素)

enter image description here

注意:如果使用密度而不是頻率,您應該使用h$density而不是h$counts

編輯:改變adj,我總是忘記它的x/y軸相對於文本而不管旋轉。

編輯#2:將第一個電話更改爲hist,以便字符串高度/寬度可以計算。不幸的是,爲了知道實際的高度/寬度,需要繪製兩次圖形。

+0

謝謝你的回答,但是當我運行你的代碼時,我得到:'> strh < - strheight('W') strheight(「W」)中的錯誤:plot.new尚未被調用過。 –

+0

請注意,如果您對標籤的大小足夠有信心,您可以放棄第一次調用'hist'並使用其他機制。這個雙重繪圖是在繪圖窗口中獲得相對準確的字符串大小的度量。 – r2evans