r - 在一个方面将 geom_line 和 geom_point 用于不同系列
问题描述
我正在使用 ggplot2 创建如下图:
我遇到的问题是在上面结合点和线。如图所示,我希望用线表示方法,用点表示数据。
我可以使用 geom_line 为均值和数据生成线,并将均值和数据放在一组中,将概率放在另一组中,如下所示:
但是我不能将线和点组合在一个方面。因此,我没有重塑下面提供的数据,也没有对它们进行分组。
years <- c(1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969)
a.data <- c(0.105, 0.075, 0.107, 0.112, 0.116, 0.062, 0.044, 0.073)
b.data <- c(-0.039, -0.022, -0.070, -0.062, -0.067, -0.065, -0.023, -0.015)
a.mean <- c(0.0893, 0.0893, 0.0893, 0.0893, 0.0893, 0.0763, 0.0757, 0.0757)
b.mean <- c(-0.040, -0.040, -0.040, -0.040, -0.040, -0.030, -0.029, -0.029)
prob <- c(0.0, 0.0, 0.0, 0.0, 0.348 0.020, 0.002, 0.0)
任何帮助将不胜感激。
解决方案
试图解决你的问题,我找到了做图的方法,不是用不同的方面,而是用同一个网格中的两个图,使用包gridExtra
。
如您所见,我必须恢复不同对象中的数据才能完成绘图的每个部分。
library(tidyverse)
library(gridExtra)
data <- data.frame(
years = c(1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969),
a.data = c(0.105, 0.075, 0.107, 0.112, 0.116, 0.062, 0.044, 0.073),
b.data = c(-0.039, -0.022, -0.070, -0.062, -0.067, -0.065, -0.023, -0.015),
a.mean = c(0.0893, 0.0893, 0.0893, 0.0893, 0.0893, 0.0763, 0.0757, 0.0757),
b.mean = c(-0.040, -0.040, -0.040, -0.040, -0.040, -0.030, -0.029, -0.029),
prob = c(0.0, 0.0, 0.0, 0.0, 0.348, 0.020, 0.002, 0.0)
)
data_points <- data %>% select(a.data, b.data, years) %>% gather(key = "a_b", value = "data", -years)
data_lines <- data %>% select(a.mean, b.mean, years) %>% gather(key = "a_b", value = "mean", -years)
p1 <- ggplot(data_points) +
geom_point(aes(x = years, y = data, color = factor(a_b))) +
geom_line(data = data_lines, aes(x = years, y = mean, color = factor(a_b))) +
theme(legend.position = "none")
p2 <- ggplot(data) + geom_line(aes(x = years, y = prob))
grid.arrange(p1, p2)
推荐阅读
- service - Laminas(前 Zend Framework 3)类未找到解析工厂
- android - 工具栏与 PreferenceFragment 重叠
- listview - Flutter:从网格视图横向滚动的列表视图过渡
- c++ - SetWindowText 不会根据主题更改 alt-tab 标题
- python - Tkinter 窗口有时会消失
- reactjs - 如何提取值以创建事件?
- css - iOS Safari 和 chrome 浏览器上未显示自定义滚动条
- java - 在 Eclipse 中合并 JAVA 项目的拆分 zip 文件
- animation - 关于gif动画
- java - 在 JAVA 中将图像减少到固定数量的给定颜色