【问题标题】:Change color of geom_smooth based on fitted slope value根据拟合的坡度值更改 geom_smooth 的颜色
【发布时间】:2018-11-02 14:14:29
【问题描述】:

我正在为演讲制作一个人物,并且为了便于演示,想做一些有点奇怪的事情。我有 45 个不同的组,我想展示每个组的斜率/截距变化(我正在使用混合效应模型分析真实模型)。

我想根据基于 geom_smooth 的斜率拟合的发散连续配色方案为我的 geom_smooth(method="lm", se=FALSE) 线着色。我不知道如何将连续配色方案与因素混合。这是我想要拟合的数据的可重现示例。

set.seed(9)
groups <- c(1:45)
family=as.factor(rep(groups, times=10))

x=abs(rnorm(450, mean=5, sd=8))
e=rnorm(450, mean=0, sd=3)
y=0.4+(-0.2*x)+e
df=data.frame(family, x, y)


ggplot(df, aes(x=x, y=y, colour=family))+
   geom_point()+
   geom_smooth(method="lm", se=FALSE)+
   theme_classic()+
   theme(legend.position="null")

【问题讨论】:

  • 我可能会计算 ggplot2 之外的斜率,然后将它们添加到数据集中进行绘图。如果您有连续的color,您仍然可以使用group 获得每组的图。就混合因子和连续颜色而言,这通常更难,但您可以使用 fill 表示点,而使用 color 表示线条。

标签: r ggplot2


【解决方案1】:

首先,如果您想要渐变颜色,您应该将family 变量更改为数字数据类型。然后您可以将任何渐变调色板传递给 scale_color_gradient(),如下所示:

ggplot(df, aes(x=x, y=y, color=as.numeric(family)))+
  geom_point()+
  geom_smooth(method="lm", se=FALSE)+
  scale_color_gradient(low = "white", high = "red") +
  theme_classic()+
  theme(legend.position="null")

【讨论】:

  • 您仍然可以使用group = family 获得单独的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
相关资源
最近更新 更多