1

ggplot2ライブラリにEのサンプルコードがありました:

theme_set(theme_bw())

dat = data.frame(value = rnorm(100,sd=2.5))
dat = within(dat, { 
    value_scaled = scale(value, scale = sd(value))    
obs_idx = 1:length(value)
  })

ggplot(aes(x = obs_idx, y = value_scaled), data = dat) + 
  geom_ribbon(ymin = -1, ymax = 1, alpha = 0.1) +
  geom_line() + geom_point()

ggplot2質問があります。例に基づいて、最初の10行を赤で、残りの行を青で作成するにはどうすればよいですか。ある種のレイヤー構文を使用しようとしましたが、機能しません。

4

2 に答える 2

4

まず、データフレームに別の列を追加しますdat0最初の10行と1残りの行に値があります。

dat$group <- factor(rep.int(c(0, 1), c(10, nrow(dat)-10)))

プロットを生成します。

library(ggplot2)

ggplot(aes(x = obs_idx, y = value_scaled), data = dat) +
geom_ribbon(ymin = -1, ymax = 1, alpha = 0.1) +
geom_line(aes(colour = group), show_guide = FALSE) +
scale_colour_manual(values = c("red", "blue")) +
geom_point()

このパラメーターshow_guide = FALSEは、赤と青の線の凡例を抑制します。

于 2012-09-03T14:21:51.213 に答える
0

OK、レイヤーを管理できました。コードは(エレガントではありませんが、機能します):

require(ggplot2)

value=round(rnorm(50,200,50),0)

nmbrs<-length(value) ##  length of vector
obrv<-1:length(value) ##  list of observations

#create data frame from the values
data_lj<-data.frame(obrv,value)
data_lj20<-data.frame(data_lj[1:20,1:2])
data_lj21v<-data.frame(data_lj[20:nmbrs,1:2])

#plot with ggplot

rr<-ggplot()+

layer(mapping=aes(obrv,value),geom="line",data=data_lj20,colour="red")+

layer(mapping=aes(obrv,value),geom="line",data=data_lj21v,colour="blue")

print(rr)
于 2012-09-04T06:24:33.560 に答える