【发布时间】:2017-11-28 17:51:18
【问题描述】:
我试图在一个窗口中绘制三个单独的图表。在每个图表中,我绘制 4 个折线图。
我正在尝试在我的图中添加一个图例,当我添加它时,R 在 plot.window(...) 中抛出一个 xlim 错误
我已经注释掉了图例部分,代码运行正常,但显然没有图例。
这个错误是否与使用 par(mfrow=c(x,y)) 修改图形参数有关??
我的代码如下:
#Three plots representing each of the sectors and technologies for DO0182
op <- par(no.readonly = TRUE)
par(oma=c(3,3,0,0),mar=c(3,3,2,2),mfrow =c(3,1))
plot(wideRawDF$Period.Start.Time,wideRawDF$DO0182U09A3,
ylab="",
xlab="",
type="l",
col = "red",
lwd = 1,
ylim = c(-107, -80),
main = "Sector A",
legend(x="topleft",
ncol = 4,
legend = c("F0 - U900MHz",
"F1 - U2100MHz",
"F2 - U2100MHz",
"F3 - U2100MHz"),
fill = c("red","cyan","magenta","black"),
title = "Frequency Bands"))
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21A1 , col = "cyan")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21A2 , col = "magenta")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21A3 , col = "black")
plot(wideRawDF$Period.Start.Time,wideRawDF$DO0182U09B3,ylab="",xlab="",type="l",col = "red", lwd = 1, ylim = c(-107, -70), main = "Sector B")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21B1 , col = "cyan")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21B2 , col = "magenta")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21B3 , col = "black")
plot(wideRawDF$Period.Start.Time,wideRawDF$DO0182U09C3,ylab="",xlab="",type="l",col = "red", lwd = 1, ylim = c(-107, -80), main = "Sector C")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21C1 , col = "cyan")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21C2 , col = "magenta")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21C3 , col = "black")
我希望先让图例在第一个子图上运行,然后我可以在它运行时更新其余代码,所以请原谅代码的不完整。
当我在第一个绘图函数中注释掉 legend 参数时,代码运行时没有提到错误,但包含它时会引发 xlim 错误。
如何进一步解决此错误,我不知道 xlim 被破坏了什么?会不会和顶部的 par/mfrow 部分有关?
用最新的情节更新了下面的代码
op <- par(no.readonly = TRUE)
par(oma=c(2,2,0,13),mar=c(3,3,2,2),mfrow =c(3,1))
box("outer", lty="solid", col="green")
box("inner", lty="dotted", col="green")
plot(wideRawDF$Period.Start.Time,wideRawDF$DO0182U09A3,
ylab="",
xlab="",
type="l",
col = "#e41a1c",
lwd = 1,
ylim = c(-107, -80),
main = "Sector A")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21A1 , col = "#377eb8")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21A2 , col = "#4daf4a")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21A3 , col = "#984ea3")
par(xpd=NA)
legend(x=-3,
y= 7,
inset = 0,
ncol = 1,
legend = c("F0 - U900MHz",
"F1 - U2100MHz",
"F2 - U2100MHz",
"F3 - U2100MHz"),
fill = c("#e41a1c","#377eb8","#4daf4a","#984ea3"),
title = "Frequency Bands")
box("outer", lty="solid", col="green")
box("inner", lty="dotted", col="green")
plot(wideRawDF$Period.Start.Time,wideRawDF$DO0182U09B3,
ylab="",
xlab="",
type="l",
col = "#e41a1c",
lwd = 1,
ylim = c(-107, -70),
main = "Sector B")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21B1 , col = "#377eb8")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21B2 , col = "#4daf4a")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21B3 , col = "#984ea3")
plot(wideRawDF$Period.Start.Time,wideRawDF$DO0182U09C3,
ylab="",
xlab="",
type="l",
col = "#e41a1c",
lwd = 1,
ylim = c(-107, -80),
main = "Sector C")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21C1 , col = "#377eb8")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21C2 , col = "#4daf4a")
lines(wideRawDF$Period.Start.Time,wideRawDF$DO0182U21C3 , col = "#984ea3")
mtext(text="Time",side=1,line=0,outer=TRUE)
mtext(text="Received Total Wideband Power (dBm)",side=2,line=0,outer=TRUE)
【问题讨论】: