如何解决ggplot2 —您可以通过哪种方法在同一散点图上自动绘制不同的y变换?
问:给定使用ggplot()的典型x,y散点图,ggplot2还能自动绘制变换后的y吗?
•在此示例中,使用ggplot2中的stat_smooth(..)
功能具有多个lm拟合:
ggplot(df,aes(x=myX,y=myY)) +
geom_point(color=‘darkgray’) +
stat_smooth(method=‘lm’,se=F,aes(color=‘black’),formula=“y ~ x”) +
stat_smooth(method=‘lm’,aes(color=‘blue’),formula=“log(y) ~ x”) +
stat_smooth(method=‘lm’,aes(color=‘green’),formula=“sqrt(y) ~ x”) +
# log-scale it so transforms show up:
scale_y_continuous(trans=‘log10’)
•但我也想绘制转换后的y的散点:sqrt(y)
和log(y)
-
ggplot2是否具有这种自动功能,也可以将它们绘制到同一图中?
-
如果没有,推荐的最简单方法是什么?是要手动计算,然后
unstack
(base-R)还是melt
(reshaper2)将它们转换为长格式?
解决方法
我建议采用下一种方法。您可以在新变量中创建转换。然后,将数据重塑为长形,然后使用一种可视化方式对所有变量或构面进行绘制。这里是方面的方法:
library(tidyverse)
#Code1
iris %>% mutate(x=Petal.Length,y=Sepal.Length,logy=log(Sepal.Length),sqrty=sqrt(Sepal.Length)) %>%
select(c(x,y,logy,sqrty)) %>%
pivot_longer(-x) %>%
ggplot(aes(x=x,y=value,color=name,group=name))+
geom_point()+
geom_smooth(method = lm,se=F)+
facet_wrap(.~name,scales = 'free_y')
输出:
或个人情节方法:
#Code2
iris %>% mutate(x=Petal.Length,se=F)
输出:
我使用了iris
数据集和tidyverse
函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。