使用 ggplot2 的多个样条 + 不同的颜色 + 线宽 + 自定义 X 轴标记

Multiple Splines using ggplot2 + Different colours + Line width + Custom X-axis markings

我有两小点,即。 (1,a1),...,(9,a9)(1,b1),...,(9,b9)。我正在尝试 ggplot2 的帮助下使用样条 分别对这两组点进行插值。所以,我想要的是2条不同的样条曲线在同一个图上插值两组点(参考这篇post)

由于我使用 ggplot2 的绘图经验很少,所以我从 复制了一个代码片段。首先,我将点集的 Y 值存储在两个数值变量 AB 中,并编写了以下代码:

library(ggplot2)
library(plyr)
A <- c(a1,...,a9)
B <- c(b1,...,b9)
d <- data.frame(x=1:9,y=A)
d2 <- data.frame(x=1:9,y=B)
dd <- rbind(cbind(d, case = "d"), cbind(d2, case = "d2"))
ddsmooth <- plyr::ddply(dd, .(case), function(k) as.data.frame(spline(k)))
ggplot(dd,aes(x, y, group = case)) + geom_point() + geom_line(aes(x, y, group  = case), data = ddsmooth)

这会产生以下输出:

现在,我正在寻找具有以下定制的几乎相同的情节:

希望对我的问题有一个详细的解决方案,尽管任何形式的帮助都是值得赞赏的。预先感谢您的时间和帮助。

您已经为绘图正确调整了数据。这只是将 case 变量与颜色和大小比例相关联的情况。

注意以下几点:

  1. 我从你的情节中推断出 AB 的值
  2. 由于线条不透明,我们先绘制它们,以便点仍然可见
  3. 我在 geom_line
  4. 中的 aes 调用中包含了 sizecolour 参数
  5. 我通过将颜色作为字符向量传递给 scale_colour_manual
  6. 选择了颜色
  7. 我还通过调用 scale_size_manual
  8. 选择了线条的大小
  9. 我通过添加对 scale_x_continuous
  10. 的调用来设置 x 轴中断
  11. 已根据使用的比例自动添加图例。
ggplot(dd, aes(x, y)) +
  geom_line(aes(colour = case, size = case, linetype = case), data = ddsmooth) +
  geom_point(colour = "black") +
  scale_colour_manual(values = c("red4", "forestgreen"), name = "Legend") +  
  scale_size_manual(values = c(0.8, 1.5), name = "Legend") +  
  scale_linetype_manual(values = 1:2, name = "Legend") +
  scale_x_continuous(breaks = 1:9)   

reprex package (v0.3.0)

于 2020-07-15 创建