我有数百个箱形图从我庞大的数据集中自动打印出来,如果变量在所选组中具有统计显着性,并且如果未检测到显着性,则我已经编制了代码来为图表着色'coral' . 这是我用 col=ifelse(...< 0.05,'coral','aquamarine')
做的 .
如果箱形图根据p值着色,我的输出会更容易浏览 . 因此,我想告诉 col=...
来自变量的颜色图,其中p值在0.05-0.01到黄色,0.01-0.005到橙色和<0.005到红色的范围内 .
我试过这个
boxplot(a~b, data=df, col=if(pv1<0.05)"yellow" else if (pv1<0.01) "orange" else if (pv1<0.005) "red" else "green")
正如您所看到的那样,这不会因为值重叠而发生 . 我需要做的是在 if
句子中写下范围,但我只是不知道如何 .
这是一些可以使用的数据 . 请注意,组的实际p值与此处给出的不同 . 我只显示pv1,2和3,以便您可以测试代码 .
a <- c(23,24,64,12,4,75,12,65,86,76)
b <- c(1,2,2,1,2,1,3,3,1,3)
df <- data.frame(a,b)
pv1 <- c(0.05)
pv2 <- c(0.01)
pv3 <- c(0.005)
1 回答
要修改你的
if...else
语句,你应该反过来思考(这里,你要求"if it is not < 0.05, then if it is < 0.01..."这是不可能的),所以你可以写:例
Another option ,如果你的pvalues在向量中,你可以试试
cut
:然后