r - R:如何使用 geom_point 将点添加到并排错误栏
问题描述
library(tidyverse)
library(ggplot2)
x <- c(3.409091, 4.090909, 4.772728, 5.454546)
data <- structure(list(approach1 = c(1.02967633502518, 1.01580726843304, 1.04284139608584,
1.04357840118423), approach2 = c(1.0173503641109, 1.00394712634612,
1.02773624467658, 1.02863476832808)), class = "data.frame", row.names = c(NA,
-4L))
data.lower <- structure(list(approach1 = c(1.0115541354025, 0.993078788685045, 1.01974099190034,
1.02080115708828), approach2 = c(0.997978808683001, 0.982131487818724,
1.00420304483585, 1.00652657076137)), row.names = c(NA, -4L), class = "data.frame")
data.upper <- structure(list(approach1 = c(1.05177371364311, 1.03851495380357, 1.06108886027293,
1.06774282552092), approach2 = c(1.03841840431302, 1.0260370212124,
1.04663363856828, 1.0525347857539)), row.names = c(NA, -4L), class = "data.frame")
bind_cols(
data %>% mutate(x = x) %>% pivot_longer(-x, values_to = "data"),
data.lower %>% pivot_longer(everything()) %>% select(lower = value),
data.upper %>% pivot_longer(everything()) %>% select(upper = value)
) %>%
ggplot(aes(x, data, color = name, ymin = lower, ymax = upper)) +
geom_errorbar(position = "dodge")
误差线对应于data.lower
和中的数据data.upper
。我还想为每个错误栏添加一个点。用于此的数据存储在data
. 我尝试了以下方法,但它似乎不起作用,因为这些点不在实际的误差线上:
bind_cols(
data %>% mutate(x = x) %>% pivot_longer(-x, values_to = "data"),
data.lower %>% pivot_longer(everything()) %>% select(lower = value),
data.upper %>% pivot_longer(everything()) %>% select(upper = value)
) %>%
ggplot(aes(x, data, color = name, ymin = lower, ymax = upper)) +
geom_errorbar(position = "dodge") + geom_point(aes(x = x, y = data))
解决方案
在您的情况下,您不需要在geom_point
. 如果是这样,您必须将它们包装在aes()
. 这是您的代码的主要问题。此外,为了确保这些点与误差线对齐,您必须通过 设置相同的定位(和宽度)position_dodge
。
library(tidyverse)
bind_cols(
data %>% mutate(x = x) %>% pivot_longer(-x, values_to = "data"),
data.lower %>% pivot_longer(everything()) %>% select(lower = value),
data.upper %>% pivot_longer(everything()) %>% select(upper = value)
) %>%
ggplot(aes(x, data, color = name, ymin = lower, ymax = upper)) +
geom_errorbar(position = position_dodge(width = 0.6)) +
geom_point(position = position_dodge(width = 0.6))
推荐阅读
- sharepoint - 是否可以将动态仪表板 (Python/R) 导出到 Sharepoint?
- server - 在公共wifi中创建的网络服务器可以从外部访问吗?
- javascript - 如何仅使用heruko插件制作“实时”数据库
- css - CSS Margin not working in React typescript project
- apache-kafka - 在 docker-desktop k8s 集群上运行 srimzi 时找不到 Kafka 主题
- wordpress - 如何在 localhost 中重命名 wordpress 文件名
- javascript - 反应 JSON 问题,迭代 JSON 对象的每个键
- c# - 如何跨多个 API 管理会话
- rust - 如何在使用 rust druid(不是镜头,而是方法调用)输入文本框时实现回调?
- android - 为什么从 Firebase 检索数据在接口中起作用,但在 Activity 内部的方法中不起作用?