将级别绘制为系列

发布于 2024-12-11 18:31:14 字数 596 浏览 0 评论 0原文

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

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

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

I have a data set that looks like this:

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

I'd like to plot the mean and SD for a level at each time point (H1...H6), but draw a continuous line through the means, not bar plots. What would be the best way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酷炫老祖宗 2024-12-18 18:31:14

这是使用优秀的 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')

在此处输入图像描述

Here's one way to do it with the excellent ggplot2 package.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文