绘制热图,并在r中定义每个类别的颜色

绘制热图,并在r中定义每个类别的颜色,r,ggplot2,plotly,R,Ggplot2,Plotly,我试图用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"), "

我试图用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")
测试数据帧 测试单位df% 添加跟踪(测试), x=测试日df$工作日, y=测试时间, z=测试_df$视图, type=“热图”) 我得到的是以下图片:

我这里的问题是:
1.这些颜色不是我告诉R使用的颜色
2.我不想要一个色阶,而是将类别划分为多个通道

我知道ggplot中有一个解决方法,我正在努力,但我想在plotly中使用它。 以下是ggplot中的外观以及我希望plotly中的内容(我知道ggplotly,但这仍然不是纯plotly):

以下是上图的代码:

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)
channel\u颜色%distinct(颜色)%%>%pull(颜色)
名称(通道颜色)%distinct(通道)%%>%pull(通道)

正如你所描述的,它听起来像是一张热图,而不是你想要的。是否希望颜色仅表示频道?那么,您想在哪里说明视图的数量呢?事实上,这有点困难。视图数量应为通道颜色的“亮度”。你有什么想法吗?