微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在ggplotly R中保留来自ggplot的原始趋势线并动态添加网格线

如何解决如何在ggplotly R中保留来自ggplot的原始趋势线并动态添加网格线

我在 R 中有以下数据框

  A<-data.frame("Col1"= c(21.5,22.5,15.5,20.5,17.5,14.5,23.5,11.5,16.5,25.5,18.5,24.5,10.5,9.5,19.5,26.5,13.5,12.5,27.5,4.5,5.5,8.5,6.5,7.5))
  A$Col2=c(0.619219548,0.723265668,0.122833055,0.536849680,0.257225692,0.081648474,0.794797325,0.023125359,0.194364553,0.909681117,0.343930779,0.857658382,0.018791029,0.014457257,0.467485576,0.950865217,0.062140165,0.040464671,0.989875246,0.001502443,0.003637989,0.012290763,0.005796326,0.007959621)

我正在尝试使用 ggplot 和 plotly 创建一个带有 logscales 的图表

library(ggplot)
library(plotly)

plott1<- ggplot(A,aes(x=Col1,y=Col2)) + geom_point()+ geom_smooth(method = "lm")     +scale_x_continuous(minor_breaks = seq(1,max(A$Col1),1))+scale_y_continuous(minor_breaks = seq(0,1,0.1))+theme( panel.grid.major = element_line(colour = "green",size = 0.5),panel.grid.minor= element_line(colour = "green",size = 0.2))

B<-ggplotly(plott1,dynamicTicks = TRUE,originalData = T )%>%layout(B,yaxis = list(type = "log"),xaxis = list(type = "log")) 

我无法保留在 plott1 中生成的趋势线 B(y 趋势线弯曲)并且网格线消失。我请求有人指导我,因为我无法解决这个问题。非常感谢提前

解决方法

您的线性趋势线会弯曲,因为您在将 ggplot 转换为绘图对象时切换到对数刻度。因此,为了解决您的问题,我建议在 ggplot 中进行日志转换:

library(plotly)

ggplot(A,aes(x=Col1,y=Col2)) + 
  geom_point()+ 
  geom_smooth(method = "lm")     +
  scale_x_log10(minor_breaks = seq(1,max(A$Col1),1))+
  scale_y_log10(minor_breaks = seq(0,1,0.1))+
  theme( panel.grid.major = element_line(colour = "green",size = 0.5),panel.grid.minor= element_line(colour = "green",size = 0.2))

enter image description here

ggplotly(originalData = T)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。