我想在barChart(ggplot)的某些列上添加一些美感。放置美学的条件基于p值。如果p值小于0.001,则需要美观。
fruits=c("apple","orange","watermelons")
juice_content=c(10,1,1000)
weight=c(5,2,2000)
df=data.frame(fruits,juice_content,weight)
df=gather(df,compare,measure,juice_content:weight, factor_key=TRUE)
plot= ggplot(df, aes(fruits,measure, fill=compare)) + geom_bar(stat="identity", position=position_dodge())
计算p值后(无论正确与否),西瓜的p值小于0.001。如何将美学放在专栏顶部?
编辑:我想添加这样的美感,例如“ ***”。
在回答后添加评论:
我可以使用以下代码生成该图:
plot= ggplot(df, aes(fruits,measure, fill=compare)) + geom_bar(stat="identity", position=position_dodge())+ scale_y_log10() + annotate(geom="text", x=c(1,2), y=c(12,2), label="***")
假设“ apple”和“ orange”的p值是有效的,那么从图中可以看出: Desire Output
在相应的列顶部有美学符号“ ***”。
我知道如何手动执行此操作;但是,我的实际数据有100列以上,并且需要将美观度***放在顶部(即p值<0.001)的列大约为34。
我不想手动执行此操作;我想要的理想代码将类似于:(以提供的示例为例)
答案 0 :(得分:0)
您似乎在ggplot
外部执行统计检验,并且想要1)将p值添加到图形中,以及2)更改y比例尺:
顺便说一下,plot=...
可能不是分配图形名称的最佳方法:
尝试一下:
p <- ggplot(df, aes(fruits,measure, fill=compare)) + geom_bar(stat="identity", position=position_dodge())![enter image description here
p <- p + annotate(geom="text", x=2.8, y=2300, label="* P <0.001")
p
p <- p + scale_y_log10()
p
您可以仅使用这些值来更改文本的位置。
编辑
为了回答您提出的问题,您可能需要尝试一些软件包,例如ggpubr
和ggsignif
。就个人而言,我更喜欢先进行统计测试以获得摘要结果,然后再根据摘要结果生成图形。尽管很方便,但要权衡一个步骤可能会降低灵活性,并花费更多时间来学习新软件包。