Сюжетные уровни как серии - PullRequest
4 голосов
/ 26 октября 2011

У меня есть набор данных, который выглядит следующим образом:

id      factor  H1  H2  H3  H4  H5  H6
434543  lev3    0.8 0.7 0.7 0.5 0.6 0.8
434544  lev2    0.5 0.7 0.9 0.7 0.7 0.1
434545  lev3    0.7 0.7 0.8 0.5 0.7 0.7
434546  lev2    0.4 0.6 0.5 0.8 0.7 0.2
434547  lev3    0.6 0.7 0.8 0.8 0.8 0.7
434548  lev2    0.7 0.7 0.6 0.7 0.8 0.4
434549  lev2    0.8 0.8 0.8 0.7 0.6 0.5
434550  lev1    0.3 0.3 0.4 0.3 0.4 0.5
434551  lev1    0.0 0.3 0.4 0.3 0.2 0.4
434552  lev3    0.6 0.8 0.8 0.8 0.6 0.7
434553  lev2    0.6 0.8 0.5 0.2 0.5 0.8

Я хотел бы построить среднее значение и SD для уровня в каждый момент времени (H1 ... H6), но нарисуйтесплошная линия через средства, а не столбцы.Как лучше всего это сделать?

1 Ответ

5 голосов
/ 26 октября 2011

Вот один из способов сделать это с помощью превосходного пакета ggplot2.

require(ggplot2)
require(reshape)

# Load data
data = read.table('data.txt', header=T)

# Format data
data = melt(data, id.vars=c('id', 'factor'), variable_name='time')
data$time = as.numeric(gsub('H(.+)', '\\1', data$time))

# Function to summarize y at each x
getband <- function(y.in){
  ymax = mean(y.in) + sd(y.in)
  ymin = mean(y.in) - sd(y.in)
  data.frame(ymax, ymin)
}

# Plot
dev.new(width=5, height=4)
qplot(time, value, group=factor, geom='point', color=factor, fill=factor, data=data) + 
  stat_summary(color=0, fun.data=getband, geom='ribbon', alpha=0.2) +
  stat_summary(fun.y=mean, geom='line')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...