gpt4 book ai didi

r - 具有因子水平的双色热图

转载 作者:行者123 更新时间:2023-12-04 10:36:46 26 4
gpt4 key购买 nike

我有这个数据框:

set.seed(0)
df <- data.frame(id = factor(sample(1:100, 10000, replace=TRUE), levels=1:100),
year = factor(sample(1950:2019, 10000, replace=TRUE), levels=1950:2019)) %>% unique() %>% arrange(id, year)

我想绘制一个热图,其中 ID 在 X 轴上,年份在 Y 轴上,当数据点存在时颜色为蓝色,当数据点不存在时颜色为红色'不存在。我快到了,但我不知道如何更改两种颜色的填充参数:

ggplot(df, aes(id, year, fill= year)) + 
geom_tile()

将两个变量绘制为因子的目的是即使在某些年份没有任何 id 时也绘制它们(并将其整行绘制为红色)。

编辑:

两件事我忘了补充(希望还不算太晚):

  • 如何在不弄乱 geom_tile() 的情况下添加 alpha 透明度?
  • 我需要对 ID 从最大缺失到最小缺失进行排序。

最佳答案

tidyr 包中的 complete() 函数可用于填充缺失的组合。首先,您需要设置一个标志变量来指示数据是否存在,然后用缺失的组合扩展数据框并用 0 填充新的标志变量:

df <- df %>% 
mutate(flag = TRUE) %>%
complete(id, year, fill = list(flag = FALSE))

ggplot(df, aes(id, year, fill = flag)) +
geom_tile()

enter image description hereEDIT1:要增加透明度,请在 geom_tile() 中添加 alpha = 0.x,其中 x 是表示透明度的值。值越低,越透明。

EDIT2:要按缺失排序,请在 ggplot 代码之前添加以下代码:

# Determine the order of the IDs
df_order <- df %>%
group_by(id) %>%
summarize(sum = sum(flag)) %>%
arrange(desc(sum)) %>%
mutate(order = row_number()) %>%
select(id, order)

# Set the IDs in order on the chart
df <- df %>%
left_join(df_order) %>%
mutate(id = fct_reorder(id, order))

关于r - 具有因子水平的双色热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58831174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com