2016-01-15 77 views
1

它們之間更接近我有繪製R中的下圖:圖例對象中的R

library(TTR) 
x.date<-seq(1,num.years,by=20) 
x.axis<-list(x1="1900",x2="1920",x3="1940",x4="1960",x5="1980",x6="2000") 
plot(Annual.Mean.1, type="l",col="gray48",xaxt="n", xlab="Years", 
ylab="Temperature") 
grid() 
axis(1,x.date,x.axis) 
SMA.1<-SMA(Annual.Mean.1,n=10 
par(new=TRUE) 
lines(SMA.1,col="red",type="l",lwd="2",xaxt="n",yaxt="n",ann=FALSE) 
SMA.2<-SMA(Annual.Mean.1,n=15) 
par(new=TRUE) 
lines(SMA.2,col="mediumpurple",type="l",lwd="2",xaxt="n",yaxt="n",ann=FALSE) 
SMA.3<-SMA(Annual.Mean.1,n=20) 
lines(SMA.3,col="blue",type="l",lwd="2",xaxt="n",yaxt="n",ann=FALSE) 
legend("topleft",legend=c("Average Temperature","SMA 10 years","SMA 15 years","SMA 20 Years"), 
    text.col=c("black","red","mediumpurple","blue"),col=c("gray48","red","mediumpurple","blue"), 
    cex=0.7,lty=c(1,1,1,1)) 

的輸出是這樣的: enter image description here

在上述曲線圖,其中包含了傳說是矩形很大;我想在下面的情節,以獲得更小的矩形,如:

enter image description here

如何做到這一點?

UPDATE

正如評論所說,我已經修改我的代碼,以使其可重複任何人:

library(TTR) 
set.seed(1) 
x.date<-seq(1,111,by=20) 
x.axis<-list(x1="1900",x2="1920",x3="1940",x4="1960",x5="1980",x6="2000") 
data<-runif(111,-3,3) 
plot(data, type="l",col="gray48",xaxt="n",xlab="Years", 
ylab="Temperature") 
grid() 
axis(1,x.date,x.axis) 
SMA.1<-SMA(data,n=10) 
par(new=TRUE) 
lines(SMA.1,col="red",type="l",lwd="2",xaxt="n",yaxt="n",ann=FALSE) 
SMA.2<-SMA(data,n=15) 
par(new=TRUE) 
lines(SMA.2,col="mediumpurple",type="l",lwd="2",xaxt="n",yaxt="n",ann=FALSE) 
SMA.3<-SMA(data,n=20) 
lines(SMA.3,col="blue",type="l",lwd="2",xaxt="n",yaxt="n",ann=FALSE) 
legend("topleft",legend=c("Average Temperature","SMA 10 years","SMA 15 years","SMA 20 Years"), 
    text.col=c("black","red","mediumpurple","blue"),col=c("gray48","red","mediumpurple","blue"), 
    cex=0.7,lty=c(1,1,1,1)) 

我仍然有如上所述的同樣的問題。

+2

您的代碼不可重複。你還應該包括你如何設置圖形設備並寫入它 – rawr

+0

我知道我的代碼是不可複製的。圖中使用的數據來自非常大的數組,不能包含在代碼中。這就是爲什麼我包括輸出。關於圖形設備,我使用的是ubuntu mate 15.10,默認圖形設置。 – masterdavid

+0

我想呼應[rawr的coomment](https://stackoverflow.com/questions/34816466/legend-objects-closer-between-them-in-r#comment57375803_34816466)並將您鏈接到[此SO帖子](http: //stackoverflow.com/help/mcve)關於如何在R中創建一個很好的重現示例。最小可重現的示例使我們更容易向您展示如何回答您的問題。這也使得其他人可以在未來形成你的問題和相應的答案。最後,當人們經歷這個練習時,往往會回答自己的問題。 –

回答

0

legend調用中減少cex參數的值。你在cex=0.7。嘗試0.6或0.5(或更低),直到找到最佳尺寸。

如果這樣不起作用,另一種方法是隻用參數bty = "n"刪除圖例周圍的框。如果圖例的背景遮擋了圖形中的線條,請在代碼中向上移動legend命令,以便首先繪製它,並將線條繪製在頂部。

+0

感謝您的建議;使用'cex = 0.5'會產生一個更小的矩形,但總是太大。 – masterdavid

+0

更低的價值呢?你可以繼續下去,0.4,0.3等。這是否工作? –

+0

以0.3爲例,我得到了一個更小(合理的)矩形,但是字符的大小非常小,難以閱讀。 – masterdavid