我认为R为设计工具设计的工具是ggplot2 stat_summary
所以我拒绝barplot
因为身体中的链接线程。
这里的问题是R表结构的声明,我认为分别为ECG 1
和ECG 2
的列标题为M.1.sum
和M.2.sum
。
我试着用means.long <- melt(M.1.sum, M.2.sum)
来做。
我认为,每个项目M.1.sum
和M.2.sum
在ids
中都有相应的行方式ID,这些ID也应包含在数据结构中。
我对其表列和行声明的建议是aes(x=ids, y=value)
,其中value
是关于ggplot
声明中的总和。
代码
library('ggplot2')
library('reshape2')
M <- structure(c(-0.21, -0.205, -0.225, -0.49, -0.485, -0.49,
-0.295, -0.295, -0.295, -0.56, -0.575, -0.56, -0.69, -0.67,
-0.67, -0.08, -0.095, -0.095), .Dim = c(3L, 6L))
M2 <- structure(c(-0.121, -0.1205, -0.1225, -0.149, -0.485, -0.49,
-0.295, -0.295, -0.295, -0.56, -0.1575, -0.56, -0.69, -0.67,
-0.117, -0.08, -0.1095, -0.1095), .Dim = c(3L, 6L))
ids <- seq(1,6)
M.1.sum <- colSums(M)
M.2.sum <- colSums(M2)
# http://stackoverflow.com/q/22305023/54964
means.long <- melt(M.1.sum, M.2.sum)
ggplot(means.long, aes(x=ids, y=value ))+ # ,fill=factor(ids))) +
stat_summary(fun.y=mean, geom="bar",position=position_dodge(1)) +
scale_fill_discrete(name="ECG",
breaks=c(1, 2),
labels=c("1", "2"))+
stat_summary(fun.ymin=min,fun.ymax=max,geom="errorbar",
color="grey80",position=position_dodge(1), width=.2) +
xlab("ID")+ylab("Sum potential")
#deprecated because stat_summary designed for the case
#barplot(M.1.sum, ids)
#barplot(M.2.sum, ids)
输出看起来不正确
预期输出:6x两列并排,两个项目的图例
不确定如何使用此fill=factor(ids)))
,因为我没有在表格中标记任何列。
你怎么能更好地摆好桌子呢?
R:3.3.1
操作系统:Debian 8.5
答案 0 :(得分:3)
对于ggplot
,必须有一个数据框,其中包含所有内容(至少对于单个绘图层,例如,绘图中的所有条形图)。您创建列总和的数据框,然后尝试使用外部向量作为id和分组,这使事情变得困难。
我就是这样做的:
means = rbind(
data.frame(mean = colSums(M), source = "M", col = 1:ncol(M)),
data.frame(mean = colSums(M2), source = "M2", col = 1:ncol(M2))
)
means$col = factor(means$col)
## one nice data frame with everything needed for the plot
means
# mean source col
# 1 -0.6400 M 1
# 2 -1.4650 M 2
# 3 -0.8850 M 3
# 4 -1.6950 M 4
# 5 -2.0300 M 5
# 6 -0.2700 M 6
# 7 -0.3640 M2 1
# 8 -1.1240 M2 2
# 9 -0.8850 M2 3
# 10 -1.2775 M2 4
# 11 -1.4770 M2 5
# 12 -0.2990 M2 6
ggplot(means, aes(x = col, y = mean, fill = source)) +
geom_bar(stat = 'identity', position = 'dodge')
您似乎也想要错误栏。我不知道什么会定义这些错误栏 - 如果你看geom_errorbar
它会期望美学ymin
和ymax
。如果您计算所需的任何值并将其作为列添加到上面的数据框中,则应将错误栏添加到绘图中。