我正在尝试创建一个数据可视化,显示湿度和温度对植物茎颜色的影响,但植物茎颜色是从照片中获取的独特的十六进制代码。我计划创建一个相关图或热图来捕获这一点,但我不确定如何处理十六进制代码。我已经完成并刚刚计算了十六进制代码中的红色值,但同样,我不确定如何将其转换为 R 中的数字。这是我的一些数据反映了问题:
df1 <- data.frame(cbind(light = c(rep("sun",2),rep("shade",2),rep("mid",2)),
moisture = c(8,2,4,5,6,7),
temp = c(85,67,44,55,68,56),
stem_color = c("#46383d", "#370f1c", "#61374e", "#506843","#688641","#5f5c4d"),
red = c(70,55,97,80,104,95)))
df1$moisture <- as.numeric(df1$moisture)
df1$temp <- as.numeric(df1$temp)
df1$red <- as.numeric(df1$red)
这里是一个
geom_tile()
示例,展示了如何处理与数据相关的十六进制代码。我已经修改了您的 df1 代码,因为 cbind()
不是必需的,并且会导致数字变量变成字符向量。这样,以后就不需要纠正了。
library(ggplot2)
df1 <- data.frame(light = rep(c("sun", "shade", "mid"), each = 2),
moisture = c(8,2,4,5,6,7),
temp = c(85,67,44,55,68,56),
stem_color = c("#46383d", "#370f1c", "#61374e", "#506843","#688641","#5f5c4d"),
red = c(70,55,97,80,104,95))
ggplot() +
geom_tile(data = df1, aes(x = moisture, y = temp, fill = stem_color)) +
scale_fill_manual(values = df1$stem_color,
labels = df1$light)