以散点图的方式绘制热图,并在每个类别中定义颜色

时间:2019-10-14 12:36:34

标签: r ggplot2 plotly

我正在尝试绘制具有指定颜色(按类别)的热图。我在这里问了类似的问题:"Split" up by category in plotly

但是,在尝试使用热图进行类似操作时遇到了一个新问题。我的代码如下:

# Test DataFrame
test_df <- data.frame(
  "weekday" = c("Fr", "Sa", "Su"),
  "time" = c("06:00:00", "12:00:00", "18:00:00"),
  "channel" = c("NBC", "CBS Drama", "ABC"),
  "colors" = c("#FCB711", "#162B48", "#AA8002"),
  "views" = c(1200, 1000, 1250)
)

plot_ly(colors = unique(as.character(test_df$colors)),  type = "heatmap") %>%
  add_trace(test_df,
        x = test_df$weekday,
        y = test_df$time,
        z = test_df$views,
        type = "heatmap")

我得到的是以下图片: enter image description here

我在这里遇到的问题是:
1.颜色不是我告诉R使用的颜色
2.我不需要色标,而是将类别分成多个通道。

我知道ggplot中有一种解决方法,我正在研究中,但我想在图中使用它。 这是ggplot中的样子以及我希望在plotply中拥有的内容(我知道ggplotly,但这仍然不是纯粹的plotly ): enter image description here

这是上面图片的代码:

channel_colors <- test_df %>% distinct(colors) %>% pull(colors)
names(channel_colors) <- test_df %>% distinct(channel) %>% pull(channel)

p <- ggplot(data = test_df,
            aes(
              x = weekday,
              y = time,
              fill = channel)) + 
  geom_tile(aes(alpha = views)) +
  scale_alpha(range = c(0.5, 1)) +
  theme_minimal() +
  scale_fill_manual(values = channel_colors) 

ggplotly(p)

我将不胜感激。

0 个答案:

没有答案