TEXT1 TEXT2 TEXT3 TEXT4
sample1 38 53 337 3995
sample2 54 81 532 4801
sample3 74 108 750 4921
sample4 103 155 1113 4923
此表显示了四个不同的文本,以及每个文本的一组样本(处理时间,以秒为单位)。我有一些带有这种信息的大型数据表(每个文本有数百个样本)。我把这个表加载到数据框中,df。
我的目的是在一个带有四个方框的箱形图中表示这个,每个文本一个。我可以很容易地代表一个方框,其中包括:
ggplot(data=df,aes(x="T1",y=TEXT1)) + geom_boxplot()
或者用TEXT1代替其值:
ggplot(data=df,aes(x="T1",y=df[1:4,2])) + geom_boxplot()
但是我无法绘制所有四个方框,我已经尝试了这个(不要非常注意x刻度的值):
ggplot(data=df,aes(x=1:4,y=df[1:4,2:5])) + geom_boxplot()
但是它说参数有不同的行数。
看看更好的例子我认为如果我重新塑造我的数据框,那么我只有两个列,一对TEXTX |每行中的样本,然后我可以将第一列分配给x坐标,将第二列分配给y坐标,它应该产生我正在寻找的结果。
但我没有看到一个简单的方法。有什么帮助吗?
感谢。
答案 0 :(得分:1)
如果添加示例列并将其用作id变量,则非常简单:
df$sample<-rownames(df)
require(reshape2)
df2 = melt(df, id.vars="sample" )
# 1 sample1 TEXT1 38
# 2 sample2 TEXT1 54
# 3 sample3 TEXT1 74
# 4 sample4 TEXT1 103
# 5 sample1 TEXT2 53
# 6 sample2 TEXT2 81
# 7 sample3 TEXT2 108
# 8 sample4 TEXT2 155
# 9 sample1 TEXT3 337
# 10 sample2 TEXT3 532
# 11 sample3 TEXT3 750
# 12 sample4 TEXT3 1113
# 13 sample1 TEXT4 3995
# 14 sample2 TEXT4 4801
# 15 sample3 TEXT4 4921
# 16 sample4 TEXT4 4923
并用
绘图ggplot(df2,aes(x=sample,y=value)) + geom_boxplot()