我想绘制一个图形,其中我的第三维(Z)由一个彩色十六进制定义,该十六进制由三个值组成。
我已经使用rgb()将三个值转换为十六进制。我现在有一个数据框,其中的x和y值为数字,而z列带有一堆十六进制值。
是否有一种创建图的方式,其中每个点都用十六进制值着色,无论是通过在图中创建热图还是在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