我有一个像这样格式化的data.table(但更大)并命名为data3:
V1 V2 V3 V4 V5
1 6 1 50000000 100000000 0.000000e+00
2 5 1 50000000 100000000 0.000000e+00
3 4 1 50000000 100000000 0.000000e+00
4 3 1 50000000 100000000 0.000000e+00
5 2 1 50000000 100000000 7.407407e-01
6 1 1 50000000 100000000 5.925926e+00
7 -1 1 50000000 100000000 -4.370370e+01
8 -2 1 50000000 100000000 -7.407407e-01
9 6 1 150000000 100000000 0.000000e+00
10 5 1 150000000 100000000 0.000000e+00
11 4 1 150000000 100000000 0.000000e+00
12 3 1 150000000 100000000 0.000000e+00
13 2 1 150000000 100000000 3.703704e+00
14 1 1 150000000 100000000 5.925926e+00
15 -1 1 150000000 100000000 -1.481481e+01
16 -2 1 150000000 100000000 0.000000e+00
我将积极和消极的价值分开:
subdat1=subset(data3, V1>0)
subdat2=subset(data3, V1<0)
我使用此代码制作了直方图:
ggplot(data=data3) +
facet_grid(~V2, space="free_x", scales="free_x", labeller=label_value)+
theme(axis.text.x=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank()) +
geom_hline(yintercept=0, colour="red", size=1) +
geom_bar(data=subdat1,aes(x=V3, y=V5, fill=V1, width=V4), stat="identity")+
geom_bar(data=subdat2,aes(x=V3, y=V5, fill=V1, width=V4), stat="identity") +
guides(fill=guide_legend(title="CNV"))
我得到的东西接近我想要的东西:
但是传说不是离散的(V1的每个值一种颜色)并且不是很好。 所以我尝试了这个:
ggplot(data=data3)+
facet_grid(~V2, space="free_x", scales="free_x", labeller=label_value)+
theme(axis.text.x=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank()) +
geom_hline(yintercept=0, colour="red", size=1) +
geom_bar(data=subdat1,aes(x=V3, y=V5, fill=V1, width=V4), stat="identity")+
geom_bar(data=subdat2,aes(x=V3, y=V5, fill=V1, width=V4), stat="identity") +
guides(fill=guide_legend(title="CNV"))+
scale_colour_gradient(trans="identity")
但有以下错误:
Erreur : Continuous value supplied to discrete scale
我因此尝试了这个,转换值并使用离散级别:
subdat1$V1 <- factor(subdat1$V1, levels = rev(levels(factor(subdat1$V1))))
subdat2$V1 <- factor(subdat2$V1, levels = levels(factor(subdat2$V1)))
再次尝试了ggplot,但我现在遇到了这个错误:
Erreur dans unit(tic_pos.c, "mm") : 'x' and 'units' must have length > 0
我没有更多的想法......
非常感谢帮助!
编辑: 我刚刚再次尝试:
ggplot(data=data3)+
facet_grid(~V2, space="free_x", scales="free_x", labeller=label_value)+
theme(axis.text.x=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank())+
geom_hline(yintercept=0, colour="red", size=1)+
geom_bar(data=subdat1,aes(x=V3, y=V5, fill=V1, width=V4), stat="identity")+
geom_bar(data=subdat2,aes(x=V3, y=V5, fill=V1, width=V4), stat="identity")+
guides(fill=guide_legend(title="CNV"))
并成功获得:
所以,我越来越近了。 我怎么能不仅反转图例,而且还反转上部直方图中的顺序?
答案 0 :(得分:0)
我最终做了什么:
ggplot(data=data3)+ facet_grid(~V2, space="free_x", scales="free_x", labeller=label_value)+ theme(axis.text.x=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank()) +geom_hline(yintercept=0, colour="red", size=1) + geom_bar(data=subdat1,aes(x=V3, y=rev(V5), fill=rev(V1), width=V4), stat="identity")+geom_bar(data=subdat2,aes(x=V3, y=V5, fill=V1, width=V4), stat="identity") + guides(fill=guide_legend(title="CNV")) +scale_fill_discrete(breaks = c(6, 5, 4, 3, 2, 1, -1, -2))
我在y中使用rev()函数并填充。但......数据就像拉伸......?
任何想法?