我正在计划制作堆叠条形图,就像这篇文章中的plot stacked bar plot in R
我有表格格式的原始数据,没有任何标题(每行包含七个值):
1.028 1.125 1.475 0.793 0.803 0.815 0.974
0.867 1.115 1.256 1.377 1.029 1.184 1.135
0.497 0.400 0.313 0.570 0.319 0.558 0.475
0.541 0.646 0.309 0.692 0.813 0.575 0.806
1.153 1.184 0.792 0.666 0.976 0.607 0.706
1.236 1.049 1.424 1.773 1.019 0.910 1.376我的计划是首先为每一行制作步长为1的不同间隔的垃圾桶。
0-1 1-2 2-3
4 3 0
1 6 0
...第二,在x轴上制作每一行的间隔的堆叠条。
我已经用谷歌搜索了很多。我在这里停了下来……
> mytable = read.table("./temp.out")
> m <-apply(mytable, 1, cut, seq(0, 3, 1))
> m
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] "(1,2]" "(0,1]" "(0,1]" "(0,1]" "(0,1]" "(1,2]" "(1,2]"
[2,] "(1,2]" "(1,2]" "(0,1]" "(0,1]" "(0,1]" "(1,2]" "(1,2]"
[3,] "(1,2]" "(1,2]" "(0,1]" "(0,1]" "(0,1]" "(0,1]" "(1,2]"
[4,] "(0,1]" "(1,2]" "(0,1]" "(0,1]" "(0,1]" "(0,1]" "(1,2]"
[5,] "(0,1]" "(1,2]" "(0,1]" "(0,1]" "(0,1]" "(0,1]" "(1,2]"
[6,] "(0,1]" "(1,2]" "(0,1]" "(0,1]" "(0,1]" "(0,1]" "(0,1]"
[7,] "(0,1]" "(1,2]" "(0,1]" "(0,1]" "(0,1]" "(0,1]" "(1,2]"之后,我无法在频率表中将其转换为
0-1 1-2 2-3
4 3 0
1 6 0
...你能建议我如何制作频率表吗?得到频率表后,这些数据可以在堆栈条形图中绘制出来。
发布于 2013-03-28 09:39:25
您可以使用匿名函数获取您想要的信息,如下所示:
m <- t(apply(mytable, 1, function(x) table(cut(x,seq(0, 3, 1)))))
> m
(0,1] (1,2] (2,3]
[1,] 4 3 0
[2,] 1 6 0
[3,] 7 0 0
[4,] 7 0 0
[5,] 5 2 0
[6,] 1 6 0如果您保留转置格式的数据,而不使用t,如下所示...
m <- apply(mytable, 1, function(x) table(cut(x,seq(0, 3, 1))))...you可以按原样绘制条形图:
barplot(m)https://stackoverflow.com/questions/15672471
复制相似问题