我正在尝试绘制具有指定颜色(按类别)的热图。我在这里问了类似的问题:"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")
我在这里遇到的问题是:
1.颜色不是我告诉R使用的颜色
2.我不需要色标,而是将类别分成多个通道。
我知道ggplot中有一种解决方法,我正在研究中,但我想在图中使用它。 这是ggplot中的样子以及我希望在plotply中拥有的内容(我知道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)
我将不胜感激。