在条形图上添加美感并更改R中的y轴

时间:2019-10-13 21:01:05

标签: r ggplot2

我想在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。

我不想手动执行此操作;我想要的理想代码将类似于:(以提供的示例为例)

  1. 我发现水果“苹果”和“橙色”很重要
  2. 找到与水果“ apple”和“ orange”相对应的x轴。
  3. 在这些列上方添加美学符号“ ***”

1 个答案:

答案 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

您可以仅使用这些值来更改文本的位置。

enter image description here

编辑 为了回答您提出的问题,您可能需要尝试一些软件包,例如ggpubrggsignif。就个人而言,我更喜欢先进行统计测试以获得摘要结果,然后再根据摘要结果生成图形。尽管很方便,但要权衡一个步骤可能会降低灵活性,并花费更多时间来学习新软件包。