[英]How create horizontal plots with colorized cells in R?
我有以下數據集(測試),並想根據“變量”值創建一個帶有不同 colors 的“單元格”的水平條 plot。 例如,“A”為紅色,“B”為藍色,“C”為灰色 colors。 末端 plot 應該看起來像一個“彩色堆棧進度條”。 謝謝!
"","date_obs","variable"
"1",2021-01-06,"C"
"2",2020-11-04,"C"
"3",2020-10-27,"B"
"4",2020-07-02,"C"
"5",2019-09-04,"B"
"6",2019-08-07,"C"
"7",2019-05-08,"B"
"8",2019-03-13,"B"
"9",2018-10-12,"A"
"10",2017-12-12,"A"
這是你的想法嗎?
我假設第一行項目延伸到今天的日期。
library(tibble)
library(dplyr)
library(lubridate)
library(ggplot2)
tib1 <-
tib %>%
mutate(date_obs = ymd(date_obs),
date_end = lag(date_obs),
date_end = case_when(is.na(date_end)~ ymd("2021-04-13"),
TRUE ~ date_end))
ggplot(tib1)+
geom_segment(aes(x = date_obs, xend = date_end, y = 1, yend = 1, colour = variable), size = 20 ) +
scale_colour_manual(values = c("A" = "red", "B" = "blue", "C" = "gray50")) +
theme_classic()+
theme(legend.position = "bottom",
axis.line.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.y = element_blank())
另一種方法可能是使用geom_rect
,它允許您通過使用顏色參數來包含每個時間段的單元格。
ggplot(tib1)+
geom_rect(aes(xmin = date_obs, xmax = date_end, ymin = 1, ymax = 1.5, fill = variable), colour = "black" ) +
scale_fill_manual(values = c("A" = "red", "B" = "blue", "C" = "gray50")) +
theme_classic()+
theme(legend.position = "bottom",
axis.line.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.y = element_blank(),
aspect.ratio = 1/6)
數據
tib <- tribble(
~"id",~"date_obs",~"variable",
"1","2021-01-06","C",
"2","2020-11-04","C",
"3","2020-10-27","B",
"4","2020-07-02","C",
"5","2019-09-04","B",
"6","2019-08-07","C",
"7","2019-05-08","B",
"8","2019-03-13","B",
"9","2018-10-12","A",
"10","2017-12-12","A"
)
由reprex package (v2.0.0) 於 2021 年 4 月 13 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.