【问题标题】:How to plot a heatmap with a color hex as the z direction component (plotly or ggplot prefered)如何使用颜色十六进制作为 z 方向分量绘制热图(首选 plotly 或 ggplot)
【发布时间】:2019-03-21 10:06:15
【问题描述】:

我想绘制一个图形,其中我的第三维 (Z) 由一个颜色十六进制定义,该颜色由三个值组成。

我已经使用 rgb() 将三个值转换为十六进制。我现在有一个数据框,其中 x 和 y 值作为数字,z 列有一堆十六进制值。

有没有办法创建一个图,其中每个点都由十六进制值着色,无论是通过在 plotly 中创建热图还是在 ggplot2 中使用 geom_raster/geom_tile。

如果有另一个我可以使用的包也可以。

这里有一些代码来展示我到目前为止所做的事情

library(dplyr)
set.seed(1)

x <- c(1,1,1,2,2,2,3,3,3)
y <- c(1,2,3,1,2,3,1,2,3)
cap_1 <- runif(9,0,10)
cap_2 <- runif(9,0,10)
cap_3 <- runif(9,0,10)
df <- data.frame(x,y,cap_1,cap_2, cap_3)

我将容量(cap_1 到 cap_3)转换为百分比,然后根据百分比中的原色创建一个颜色十六进制

df <- df %>%
    mutate(cap_sum = rowSums(df[3:5])) %>%
    mutate(cap_1_p = cap_1/cap_sum) %>%
    mutate(cap_2_p = cap_2/cap_sum) %>%
    mutate(cap_3_p = cap_3/cap_sum) %>%
    mutate(z = rgb(cap_1_p, cap_2_p,cap_3_p))

我尝试将其绘制为热图,但未成功:

library(plotly)
fig <- plot_ly(df, x='x', y='y', z='z', 
           type = "heatmap")
fig

【问题讨论】:

  • 你能分享代码和数据来解决你的问题reproducible吗?
  • 我用代码对问题进行了一些编辑。问题真的是关于最后几行代码

标签: r ggplot2 plotly r-plotly


【解决方案1】:

这是一种通过ggplotggplotly 的方法:

g <- ggplot(df, aes(x,y, fill = z)) + 
  geom_tile() +
  scale_fill_identity()
plotly::ggplotly(g)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 2014-04-09
    • 2018-01-05
    • 2019-10-29
    • 2014-08-07
    • 1970-01-01
    • 2018-10-22
    • 2012-05-01
    相关资源
    最近更新 更多