簡體   English   中英

R 中的 ggplot - 帶有分色瓷磚的 geom_tile

[英]ggplot in R - geom_tile with color-splitted tiles

假設我有一個數據,其中 group1 和 group2 都將 integer 值從 0 到 4 分配給實體 a、b、c、d、e,因此:

data <- data.frame(data_id = c(letters[1:5], letters[1:5]), data_group =  c(replicate(5, "Group1"), replicate(5, "Group2")), data_value = c(0:4, replicate(5,2))) 

我想使用 R 中的ggplot package 中的geom_tile()來計算這些值 plot:

ggplot(data, aes(x=data_value, y=data_id)) + 
  geom_tile(aes(fill = data_group), width = 0.4, height = 0.8)

該圖如下所示:

在此處輸入圖像描述

我的問題是,對於實體c ,Group1 和 Group2 都分配相同的值 2,但紅色瓷磚被藍色瓷磚覆蓋。 理想情況下,我希望在這種情況下有一個分裂的瓷磚,即一半紅色,一半藍色。 有誰知道如何做到這一點?

提前謝謝了!

我覺得最好通過將數據拆分為重疊和不重疊的集合來實現,然后使用單獨geom_tile命令繪制它們:

library(dplyr)

data <- data.frame(data_id = c(letters[1:5], 
                               letters[1:5]),
                   data_group =  c(replicate(5, "Group1"),
                                   replicate(5, "Group2")),
                   data_value = c(0:4, replicate(5,2))) 

data_unique <- data %>% ## non-overlapping data
  group_by(data_id, data_value) %>%
  filter(n() == 1)

data_shared <- data %>% ## overlapping data
  group_by(data_id, data_value) %>%
  filter(n() != 1)

ggplot(data,
       aes(x = data_value, y = data_id)) + 
  geom_tile(data = data_unique, aes(fill = data_group, group = data_group), 
            width = 0.4, height = 0.8) + ## non-overlapping data
  geom_tile(data = data_shared, aes(fill = data_group, group = data_group), 
            width = 0.4, height = 0.8, 
            position = "dodge") ## non-overlapping data

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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