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