如何在交互式ggplot2热图上添加图例 库(dplyr) #> #>正在附加包:“dplyr” #>以下对象已从“package:stats”屏蔽: #> #>滤波器,滞后 #>以下对象已从“package:base”屏蔽: #> #>相交、set

如何在交互式ggplot2热图上添加图例 库(dplyr) #> #>正在附加包:“dplyr” #>以下对象已从“package:stats”屏蔽: #> #>滤波器,滞后 #>以下对象已从“package:base”屏蔽: #> #>相交、set,r,ggplot2,R,Ggplot2,如何在交互式ggplot2热图上添加图例 库(dplyr) #> #>正在附加包:“dplyr” #>以下对象已从“package:stats”屏蔽: #> #>滤波器,滞后 #>以下对象已从“package:base”屏蔽: #> #>相交、setdiff、setequal、并集 处理此问题的最简单方法是映射要在图例中显示的类别名称,并将其用于要填充的美学映射。然后,您可以使用scale\u fill\u manual提供您喜欢的颜色,ggplot将提供类别标签 Heat_clean %

如何在交互式ggplot2热图上添加图例
库(dplyr)
#> 
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#> 
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#> 
#>相交、setdiff、setequal、并集

处理此问题的最简单方法是映射要在图例中显示的类别名称,并将其用于要填充的美学映射。然后,您可以使用
scale\u fill\u manual
提供您喜欢的颜色,ggplot将提供类别标签

Heat_clean %>% 
mutate(color = case_when(Days <= 5 ~ "blue", 
Days <= 15 ~ "orange", 
Days <= 25 ~ "pink", 
is.na(Days) ~ "red", TRUE ~ "green")) %>% 
ggplot(aes(month,Apartment_no)) + 
geom_tile(aes(fill=color),color="white")+
scale_fill_identity()+
geom_text(aes(x=month,y=Apartment_no,label=Days))-> p

plotly::ggplotly(p)
##将赋值和打印分离到单独的块中,以允许更多的控制
清洁热量%

mutate(color=case\u when(天)您可以发布一个Heat\u clean的示例数据吗?您没有映射到aes()调用的条件。您可以添加一个labels=c(“条件1”、“条件2”…)在调用
scale\u fill\u identity
,或使用条件而不是颜色,然后在调用
scale\u fill\u identity
@BrianFisher时使用value=colors,我已在我的帖子中添加了示例数据。
Heat_clean %>% 
mutate(color = case_when(Days <= 5 ~ "blue", 
Days <= 15 ~ "orange", 
Days <= 25 ~ "pink", 
is.na(Days) ~ "red", TRUE ~ "green")) %>% 
ggplot(aes(month,Apartment_no)) + 
geom_tile(aes(fill=color),color="white")+
scale_fill_identity()+
geom_text(aes(x=month,y=Apartment_no,label=Days))-> p

plotly::ggplotly(p)
## separating assignment and plotting into separate blocks, to allow more control
clean_heat <- Heat_clean %>% 
      mutate(color = case_when(Days <= 5 ~ "Less than 5", 
                               Days <= 15 ~ "5 to 15", 
                               Days <= 25 ~ "15 to 25", 
                               is.na(Days) ~ "missing", TRUE ~ "more than 25"))

# Using factors to allow for control about plotting order. The following makes it an ordered factor

clean_heat$color <- factor(clean_heat$color, 
                           levels = c( "Less than 5",    "5 to 15",  "15 to 25"  ,    "more than 25", "missing")
)

clean_heat %>%
      ggplot(aes(month,Apartment_no, fill = color)) + 
      geom_tile(color = "white")+
      geom_text(aes(x=month,y=Apartment_no,label=Days))+
      scale_fill_manual(
            values = c("blue", "orange", "pink", "green", "red"),
            name = "Legend"
            )