【问题标题】:Interactive ggplot2 heat map交互式 ggplot2 热图
【发布时间】:2019-11-21 17:02:34
【问题描述】:
library(dplyr)

Apartment_no <- c("1-SV","1-SV","1-SV","1-SH","1-SH","1-SH","1-1V","1-1V","1-1V",
                  "1-1H","1-1H","1-1H","3-SV","3-SV","3-SV","3-1V","3-1V","3-1V",
                  "3-1H","3-1H","3-1H")

month <- c("September","October","November","September","October","November",
            "September","October","November","September","October","November",
            "September","October","November","September","October","November",
            "September","October","November")

Days <- c(19,19,28,2,19,28,2,19,28,2,19,28,25,31,28,12,29,24,8,26,19)

Heat_clean <- data.frame(Apartment_no,month,Days)

我得到了上述格式的数据,并使用以下代码制作了一个 ggplot2 热图:

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()

有没有办法让这种互动?我知道我们定义使用 p 任意调用它,然后我们可以使用

plotly::ggplotly(p)

但我实际上很困惑在这种情况下可以在哪里添加它以使其具有交互性。

【问题讨论】:

  • 我不确定我是否理解你的问题。您绝对可以将该 ggplot2 可视化分配给变量 p 并使用 plotly::ggplotly(p) 将其转换为交互式可视化。你在哪里遇到麻烦?
  • @yifyan,我不确定,我可以在上面的代码中在哪里添加那个东西,因为它给了我一个错误以及如何激活我的图例,即我想要我的日子的颜色条件作为我的传说。
  • 我无法复制您的错误。可以添加错误消息或屏幕截图吗?
  • @yifyan,我使用了以下代码,> Heat_clean %>% mutate(color = case_when(Days %p%>%ggplot(aes(月,Apartment_no))+ geom_tile(aes(填充=颜色),颜色= "white")+scale_fill_identity() >plotly::ggplotly(p) 错误是“错误:手动比例中的值不足。需要 31 个,但只提供了 21 个。”。但是,如果我从上面的代码中删除“p%>%”,它就可以正常工作。我只是想让它互动

标签: r ggplot2 dplyr plotly r-plotly


【解决方案1】:

我并不完全清楚你在这里寻找什么,但我们可以使用ggplotly 使ggplot 对象“交互式”,正如你所说的那样;

library(dplyr)
library(ggplot2)
library(plotly)
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() %>%
  ggplotly(.)

或者您可以直接在plotly 中制作热图;

Heat_clean %>% 
  mutate(color = case_when(Days <= 5 ~ 1, 
                           Days <= 15 ~ 2, 
                           Days <= 25 ~ 3, 
                           is.na(Days) ~ 4, 
                           TRUE ~ 5),
         color = as.factor(color)) %>% 
  plot_ly(z = .$color, 
          x = .$month, 
          y = .$Apartment_no, 
          type = "heatmap", showscale=FALSE, colorscale ="Viridis")

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 2019-01-18
    • 2012-01-19
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多