使用 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 值存储在两个数值变量 A 和 B 中,并编写了以下代码:
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)
这会产生以下输出:
现在,我正在寻找具有以下定制的几乎相同的情节:
- 两条样条曲线应该有不同的颜色
- 线宽应由用户选择(就像我们在
plot
函数中所做的那样)
- 一个图例(指定颜色和对应的属性)
- X 轴上的标记应为 1,2,3,...,9
希望对我的问题有一个详细的解决方案,尽管任何形式的帮助都是值得赞赏的。预先感谢您的时间和帮助。
您已经为绘图正确调整了数据。这只是将 case
变量与颜色和大小比例相关联的情况。
注意以下几点:
- 我从你的情节中推断出
A
和 B
的值
- 由于线条不透明,我们先绘制它们,以便点仍然可见
- 我在
geom_line
中的 aes
调用中包含了 size
和 colour
参数
- 我通过将颜色作为字符向量传递给
scale_colour_manual
选择了颜色
- 我还通过调用
scale_size_manual
选择了线条的大小
- 我通过添加对
scale_x_continuous
的调用来设置 x 轴中断
- 已根据使用的比例自动添加图例。
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 创建
我有两小点,即。 (1,a1),...,(9,a9)
和 (1,b1),...,(9,b9)
。我正在尝试 在 ggplot2
的帮助下使用样条 分别对这两组点进行插值。所以,我想要的是2条不同的样条曲线在同一个图上插值两组点(参考这篇post)
由于我使用 ggplot2
的绘图经验很少,所以我从
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)
这会产生以下输出:
现在,我正在寻找具有以下定制的几乎相同的情节:
- 两条样条曲线应该有不同的颜色
- 线宽应由用户选择(就像我们在
plot
函数中所做的那样) - 一个图例(指定颜色和对应的属性)
- X 轴上的标记应为 1,2,3,...,9
希望对我的问题有一个详细的解决方案,尽管任何形式的帮助都是值得赞赏的。预先感谢您的时间和帮助。
您已经为绘图正确调整了数据。这只是将 case
变量与颜色和大小比例相关联的情况。
注意以下几点:
- 我从你的情节中推断出
A
和B
的值 - 由于线条不透明,我们先绘制它们,以便点仍然可见
- 我在
geom_line
中的 - 我通过将颜色作为字符向量传递给
scale_colour_manual
选择了颜色
- 我还通过调用
scale_size_manual
选择了线条的大小
- 我通过添加对
scale_x_continuous
的调用来设置 x 轴中断
- 已根据使用的比例自动添加图例。
aes
调用中包含了 size
和 colour
参数
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 创建