2014-04-15 39 views
1

我有下面的例子中我试图用逗号分隔符添加到数大于999(即1000 2000 3000 ...)添加逗号分隔符,以轴标签

#Dummy data 
Data1 <- data.frame(flow = c(8000,8.5,6,7.1,9), SP_elev = c(20,11,5,25,50)) 
Data2 <- data.frame(flow = c(7000,7.2,6.5,8.2,8.5), SP_elev = c(13,15,18,25,19)) 
Data3 <- data.frame(flow = c(2000,3,5,7,9), SP_elev = c(20,25,28,30,35)) 
Data4 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(13,15,18,25,19)) 
Data5 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(13,15,18,25,19)) 
Data6 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(22,23,25,27,29)) 

#Create Vector list (in place of list.files) 
dataframes = list("Data1" = Data1, 
        "Data2" = Data2, 
        "Data3" = Data3, 
      "Data4" = Data4, 
      "Data5" = Data5, 
      "Data6" = Data6) 

# open the PDF device 
pdf(file="Dummy_Example.pdf", paper="letter", height=10, width=8) 

#Create array of plots 
par(mfrow=c(3,2)) 

#plot a with regression model 
for (i in dataframes) { 

plot (i[,c('flow', 'SP_elev')], xlab=expression(paste("Discharge (", ft^3, "/s)",sep = "")), ylab= "Elevation (m)", tck=0.02, adj = 0.5) 
axis(side=1, at=axTicks(1), labels=formatC(axTicks(1), format="d", big.mark=',')) 

} 

# close the PDF device 
dev.off() 

x轴标签在输出PDF上被绘制两次。在上面的代码中,我在axis命令中出错的地方在哪里?

回答

3
#Dummy data 
Data1 <- data.frame(flow = c(8000,8.5,6,7.1,9), SP_elev = c(20,11,5,25,50)) 
Data2 <- data.frame(flow = c(7000,7.2,6.5,8.2,8.5), SP_elev = c(13,15,18,25,19)) 
Data3 <- data.frame(flow = c(2000,3,5,7,9), SP_elev = c(20,25,28,30,35)) 
Data4 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(13,15,18,25,19)) 
Data5 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(13,15,18,25,19)) 
Data6 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(22,23,25,27,29)) 

#Create Vector list (in place of list.files) 
dataframes = list("Data1" = Data1, 
        "Data2" = Data2, 
        "Data3" = Data3, 
      "Data4" = Data4, 
      "Data5" = Data5, 
      "Data6" = Data6) 

# open the PDF device 
pdf(file="Dummy_Example.pdf", paper="letter", height=10, width=8) 

#Create array of plots 
par(mfrow=c(3,2)) 

#plot a with regression model 
for (i in dataframes) { 

plot (i[,c('flow', 'SP_elev')], xlab=expression(paste("Discharge (", ft^3, "/s)",sep = "")), ylab= "Elevation (m)", tck=0.02, adj = 0.5, xaxt='n') 
axis(side=1, at=axTicks(1), labels=formatC(axTicks(1), big.mark=',')) 
} 


# close the PDF device 
dev.off() 

要获得轴标签不不出现两次,xaxt='n'需要被添加到plot功能。在for循环中调用axis时,将对轴标签进行格式化和绘制。

0

请问块开始:

for (i in dataframes) { 

对被多少时间axis()叫任何影响?

我建议把这个行:

axis(side=1, at=axTicks(1), labels=formatC(axTicks(1), format="d", big.mark=',')) 

以外的for循环,像这样:

for (i in dataframes) 
{ 
    plot (i[,c('flow', 'SP_elev')], xlab=expression(paste("Discharge (", ft^3, "/s)",sep = "")), ylab= "Elevation m)", tck=0.02, adj = 0.5) 
} 
axis(side=1, at=axTicks(1), labels=formatC(axTicks(1), format="d", big.mark=',')) 

此外,您可以尝试在其他调用调用argumnent轴= F绘图()来抑制x轴的多重绘图。

以获得更多关于控制轴参见link here

+0

不是真的。你能解释一下吗? – dubbbdan

+0

每次循环执行时,都不会导致再次调用axis(),导致创建多个轴?循环执行多少次? – ryyker

+0

我试过上面发布的解决方案,它不会改变在x轴上绘制两次数字大于999的问题。如果它在循环之外,它只会影响最后一个绘图(页面的左下角)。 – dubbbdan