2016-01-15 47 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