我正在构建一个相当密集的情节,但我遇到geom_smooth
的基本问题,我似乎找不到任何答案。以下是使用geom_smooth(method = "lm")
创建情节的方式:
当我构建我的情节的geom_smooth()
部分时,我想改变线条颜色。当我这样做时,它会绘制与我的置信区间接近的新线条,
调用geom_smooth(method = "lm", color = "black")
会返回此信息:
有没有一种简单的方法来摆脱边界线,但保持主线黑色?
编辑:我无法提供完整的数据代码,但提供的情况会在此处重现错误。您只需要这个就可以回答这个问题。根据以下评论,它可能与情节(ggplotly
)进行互动。
library(ggplot2)
library(plotly)
df <- data.frame(
Demographic = rnorm(1:100),
Proficiency = rnorm(1:100),
N.Tested = rnorm(1:100)
)
a <- ggplot(data = df,
aes(x = Demographic,
y = Proficiency)
)
b <- a + geom_point(aes(
text = "to be replaced",
color = N.Tested,
size = N.Tested
),
show.legend = FALSE)
c <- b + scale_color_gradient2(low = "firebrick4", high = "gold", mid = "orange", midpoint=300)
d <- c + geom_smooth(method = "lm", color="black")
ggplotly(d)
答案 0 :(得分:1)
ggplotly
经常会产生意想不到的结果。如果您想要的最终产品是图形图,那么通常最好直接使用图形API。使用plotly API还可以访问比ggplotly更广泛的选项。
geom_smooth
提供的统计数据没有方便的内置计算。因此,我们首先使用lm()
和predict.lm()
计算拟合和误差范围
lm1 = lm(Proficiency~Demographic, data=df)
lm.df = data.frame(Demographic = sort(df$Demographic),
Proficiency = predict(lm1)[order(df$Demographic)],
se = predict(lm1, se.fit = T)$se.fit[order(df$Demographic)])
lm.df$ymax = lm.df$Proficiency + lm.df$se
lm.df$ymin = lm.df$Proficiency - lm.df$se
现在我们已准备好直接使用图表API进行绘图
plot_ly() %>%
add_trace(data=df, x=~Demographic, y=~Proficiency, type="scatter", mode="markers",
size=~N.Tested, color=~N.Tested, colors = c("#8B1A1A", "#FFA500"), showlegend=F) %>%
add_ribbons(data=lm.df, x=~Demographic, ymin = ~ymin, ymax = ~ymax,
line = list(color="transparent"), showlegend=F,
fillcolor = "#77777777") %>%
add_trace(data=lm.df, x=~Demographic, y=~Proficiency,
type="scatter", mode="lines", line=list(color="black"), showlegend=F)
答案 1 :(得分:0)