簡體   English   中英

如何在 R 中創建帶有彩色單元格的水平圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM