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

首先,将另一列添加到您的数据框中dat。它对0前 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

好的,我可以管理图层,代码是(不优雅,但有效):

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 回答