2017-08-31 75 views
1

我在每個圖表上顯示圖例時遇到問題。 Overlapping Histograms on one pageR - 傳奇和直方圖問題

我想每個都在右上角有個傳說。但是,在我使用的命令行中,我獲得了放大版本。

par(mfrow = c(2,2)) 

#plot histograms on one same graph 
hist(DSA, prob=TRUE, main="Controls", xlab="Sizes (um)", ylab="Frequency", col="yellowgreen",xlim= c(5,25), ylim=c(0,0.5), breaks=10) 
hist(DSB, prob=TRUE, col=rgb(0,0,1,0.5),add=T) 
hist(DSC, prob=TRUE, col=rgb(0.8,0,1,0.5),add=T) 
box() 

plot_colors <- c("yellowgreen","blue", "pink") 
legend(x = "topright",inset = 0, 
     legend = c("1", "2", "3"), 
     col=plot_colors, lwd=6, cex=0.5,horiz = FALSE) 

任何想法?謝謝!我已經將lwd和cex改變成了許多組合,但仍然無法實現。

+0

非常感謝!在這個 – Orbis

+1

上我很新,請提供你的數據'DSA','DSB'和'DSC',這樣我們就可以重現你的圖。你可以通過拷貝並粘貼'dput(DSA)'等的輸出來實現這一點。 – useR

+0

順便說一句,這個代碼只會產生一個圖中的一個,如圖所示。 – useR

回答

1

OP只有四個地塊之一提供的代碼如圖所示的畫面,所以我只會與工作,但可以只是輕鬆地應用以下解決所有的傳說:

par(mfrow = c(2,2)) 

# Some madeup data 
DSA = rnorm(10000, 15, 2) 
DSB = rnorm(10000, 17, 3) 
DSC = rnorm(10000, 13, 1) 


#plot histograms on one same graph 
hist(DSA, prob=TRUE, main="Controls", xlab="Sizes (um)", ylab="Frequency", col="yellowgreen",xlim= c(5,25), ylim=c(0,0.5), breaks=10) 
hist(DSB, prob=TRUE, col=rgb(0,0,1,0.5),add=T) 
hist(DSC, prob=TRUE, col=rgb(0.8,0,1,0.5),add=T) 
box() 

plot_colors <- c("yellowgreen","blue", "pink") 
legend(x = "topright",inset = 0, 
     legend = c("1", "2", "3"), 
     col=plot_colors, lwd=6, cex=0.7,horiz = FALSE, y.intersp=0.6, bty="n") 

enter image description here

基本上,我將y.intersp減小到0.6,以便減少圖例鍵之間的y間距。然後我設置了cex=0.7(它大於cex=0.5),以便在間距縮小之後使其更具可讀性。在我看來,可選的bty = "n"參數消除了傳說中的邊界,這更顯示出來。

+0

嗨,我試過你的建議,我不得不減少y.intersp 0.1和cex = 0.4,它的工作原理。感謝您的幫助! – Orbis

+0

@Orbis如果你認爲這回答你的問題,隨時接受它,讓別人可以看到! – useR