r - 是否可以仅使用 R 中的起点和终点信息绘制图形(一种箱线图)?
问题描述
我想画一种箱线图,但该图将代表数据集的起点和终点。例如,我可以在下面表示我的输入,但我在 excel 中绘制输出。
dt<-data.frame(Start=c(5,15,22), End=c(10,21,38))
解决方案
你可以使用geom_rect
:
library(dplyr)
library(ggplot2)
dt %>%
mutate(group = factor(seq(n())),
ymin = seq(n()),
ymax = seq(n()) + 1) %>%
ggplot() +
geom_rect(aes(xmin = Start, xmax = End, ymin = ymin,
ymax = ymax, fill = group), color = "gray50") +
scale_y_reverse(expand = c(0.5, 0.5), breaks = 0:5) +
scale_x_continuous(breaks = 0:10 * 5) +
scale_fill_manual(values = c("#ea3323", "#bdd6ac", "#779de6")) +
theme_bw() +
theme(legend.position = "none",
axis.text.y = element_blank(),
axis.ticks.length.y = unit(0, "pt"),
panel.grid.minor = element_blank())
或者,为了更接近地复制更多代码:
dt %>%
mutate(group = factor(seq(n())),
ymin = seq(n()),
ymax = seq(n()) + 1) %>%
ggplot() +
geom_rect(aes(ymin = 1, ymax = 2, xmin = -Inf, xmax = Inf),
fill = "#00000004") +
geom_rect(aes(ymin = 3, ymax = 4, xmin = -Inf, xmax = Inf),
fill = "#00000004") +
geom_rect(aes(xmin = Start, xmax = End, ymin = ymin,
ymax = ymax, fill = group), color = "gray50") +
scale_y_reverse(expand = c(0.25, 0.25), breaks = 0:5) +
scale_x_continuous(breaks = 0:10 * 5, limits = c(0, 40)) +
scale_fill_manual(values = c("#ea3323", "#bdd6ac", "#779de6")) +
theme_bw() +
theme(legend.position = "none",
axis.text.y = element_blank(),
axis.ticks.length.y = unit(0, "pt"),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
axis.line = element_line(color = "black")
)
推荐阅读
- python - 如何在 pinterest 中抓取日期
- node.js - 有什么方法可以从 Node.js 替换整个 MongoDB 中的集合中的特定字符串
- postgresql - 逻辑复制槽的restart_lsn位置移动很慢
- python - 获取主键组合对应的最大值
- javascript - XPATH 做一个没有双胞胎的元素列表
- android - Android中的OkHttp Mutual SSL
- mysql - Docker Compose mysql 环境变量与 Application .env 数据库变量。很困惑
- ti-basic - TI-82 字符串变量?
- python - Pandas:使用列在两个 DF 上左合并,但只取另一列的最后一个(或平均值)
- audio - 如何找到在一定时间内使用的静默字节数?