请注意,您的数据是字符矩阵。Final
如果对象是通过以下方式创建的,则更好:
Final <- data.frame(Loc = Locations,
Doy = as.numeric(format(Date,format = "%j")),
Temp = RandData)
这样,下面的代码在一个窗口上并排绘制了两个图。我使用公式接口来plot()
利用它的subset
参数,它的工作原理类似于subset()
函数。
ylab <- "Temperature"
xlab <- "Day of year"
layout(matrix(1:2, ncol = 2))
plot(Temp ~ Doy, data = Final, subset = Loc == "England", main = "England",
ylab = ylab, xlab = xlab)
plot(Temp ~ Doy, data = Final, subset = Loc == "Wales", main = "Wales",
ylab = ylab, xlab = xlab)
layout(1)
这产生了这个情节:
如果您希望它们具有相同的比例,那么我们对其进行一些修改:
ylab <- "Temperature"
xlab <- "Day of year"
xlim <- with(Final, range(Doy))
ylim <- with(Final, range(Temp))
layout(matrix(1:2, ncol = 2))
plot(Temp ~ Doy, data = Final, subset = Loc == "England", main = "England",
ylab = ylab, xlab = xlab, xlim = xlim, ylim = ylim)
plot(Temp ~ Doy, data = Final, subset = Loc == "Wales", main = "Wales",
ylab = ylab, xlab = xlab, xlim = xlim, ylim = ylim)
layout(1)
它产生了这个版本的情节
对于线图,您需要按Doy
顺序获取数据,然后添加type = "l"
到plot()
调用中。
为了完整起见,@Justin 展示了如何使用高级绘图包之一来实现类似但通过ggplot2减少用户工作量。lattice包是 R 中另一个主要的高级绘图包。您可以使用 lattice 通过以下方式实现相同的绘图:
require(lattice)
xyplot(Temp ~ Doy | Loc, data = Final, type = c("l","p")
后者产生
仅用于type = "p"
点和type = "l"
仅用于线。如您所见,与使用基本图形包相比,更高级别的包使生成这些图更容易一些。