1

次の点を考慮してください。

set.seed(1)
RandData <- rnorm(100,sd=20)
Locations <- rep(c('England','Wales'),each=50)
today <- Sys.Date()
dseq <- (seq(today, by = "1 days", length = 100))

Date <- as.POSIXct(dseq, format = "%Y-%m-%d")

Final <- cbind(Loc = Locations, Doy = as.numeric(format(Date,format = "%j")), Temp = RandData)

この例では、同じ Figure ウィンドウに 2 つのプロットを作成する方法を教えてください。最初のプロットはドイに対するイングランドの気温を示し、2 番目のプロットはドイに対するウェールズの気温を示していますか?

4

2 に答える 2

1

データは文字行列であることに注意してください。Finalオブジェクトが次の方法で作成されている場合に適しています。

Final <- data.frame(Loc = Locations,
                    Doy = as.numeric(format(Date,format = "%j")),
                    Temp = RandData)

これにより、以下のコードは 1 つのウィンドウに 2 つのプロットを並べて描画します。関数のように機能する引数plot()を利用するために、数式インターフェイスを使用します。subsetsubset()

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 は、高レベルのプロット パッケージの 1 つを使用して同様のことを達成する方法を示しましたが、 ggplot2 を介してユーザーの労力を減らします。格子パッケージは、R のもう 1 つの主要なハイレベル プロット パッケージです。次の方法で格子を使用して同じプロットを実現できます。

require(lattice)
xyplot(Temp ~ Doy | Loc, data = Final, type = c("l","p")

後者は

格子を介したイングランドウェールズの一時v3

type = "p"点のみと線のみに使用しtype = "l"ます。ご覧のとおり、上位レベルのパッケージを使用すると、これらのプロットをベース グラフィック パッケージよりも少し簡単に作成できます。

于 2012-06-13T18:29:48.423 に答える
0

cbind を使用してデータを作成すると、それらはすべてcharacter. 代わりに使用data.frame()

Final <- data.frame(Loc = Locations, 
                    Doy = as.numeric(format(Date,format = "%j")), 
                    Temp = RandData)

ggplotこのようなことを非常にうまく行います。

library(ggplot2)
ggplot(Final, aes(x=Doy, y=Temp)) + geom_path() + facet_wrap( ~ Loc)

または、カラーリングを使用できます。

ggplot(Final, aes(x=Doy, y=Temp, color=Loc)) + geom_path()
于 2012-06-13T18:29:03.837 に答える