如何解决动态轴的scale_y_continuous
扫描了我在scale_y_continuous上可以找到的所有内容后,就有办法实现以下目标:
调查数据的动态y轴,其中限值会更改%和平均结果。 P为%值,轴需要设置为0-100 M是平均值,需要设置为1-6
如果所有值都在同一图中,这将非常容易;但是我在ggarrange中有两个图,第二个图的值小于第一个,并且条形图未对齐。
library(ggplot2)
df <- data.frame(dose=c("D0.5","D1","D2"),P = c(42,98,77.5),M = c(2,3.4,5.5)
)
ggplot(data=df,aes(x=dose,y=P)) +
geom_bar(stat="identity")
有没有一种方法可以将P的scale_y_continuous设置为c(0,100),将M c(0.6)设置为scale_y_continuous。
解决方法
要获得基于用户输入选择的图,我们可以这样做:
library(ggplot2)
choice = 'P'
if(choice == 'P') {
p1 <- ggplot(data=df,aes(x=dose,y=P)) + geom_col() +
scale_y_continuous(limits = c(0,100))
} else {
p1 <- ggplot(data=df,y=M)) + geom_col() +
scale_y_continuous(limits = c(0,6))
}
p1
要同时绘制两个图:
您可以先将limits
设置为scale_y_continuous
,然后再将它们合并到ggarrange
中。
p1 <- ggplot(data=df,y=P)) + geom_col() +
scale_y_continuous(limits = c(0,100))
p2 <- ggplot(data=df,y=M)) + geom_col() +
scale_y_continuous(limits = c(0,6))
ggpubr::ggarrange(p1,p2)
但是,您也可以考虑使用具有不同y轴的构面:
df %>%
tidyr::pivot_longer(cols = c(P,M)) %>%
ggplot() + aes(dose,value) + geom_col() +
facet_wrap(.~name,scales = "free_y")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。