绘制级别为系列

fle*_*tch 4 plot grouping r

我有一个如下所示的数据集:

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
Run Code Online (Sandbox Code Playgroud)

我想在每个时间点(H1 ... H6)绘制一个水平的平均值和SD,但是通过平均值绘制一条连续线,而不是条形图.最好的方法是什么?

Joh*_*lby 5

这是使用优秀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')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述