在R中基于十六进制颜色码绘制植物茎颜色影响因素可视化图的方法
解决方案:R中可视化湿度、温度与植物茎颜色的关系
针对你的需求,这里提供几种实用的可视化方案,直接基于你给出的数据集实现:
1. 散点图:用实际茎颜色标记,关联环境因子
这个方案能直观展示每个样本的实际茎颜色,同时结合湿度、温度两个变量:
library(ggplot2) ggplot(df1, aes(x = temp, y = moisture)) + geom_point(aes(color = stem_color, size = red), alpha = 0.8, stroke = 1) + # 强制使用原始十六进制颜色,不做自动颜色映射 scale_color_identity() + labs(x = "温度", y = "湿度", size = "红色分量值", title = "湿度、温度与植物茎颜色的关系") + theme_minimal()
说明:
scale_color_identity()让ggplot直接调用stem_color列的十六进制颜色,避免自动配色干扰- 点的大小绑定红色分量值,可同时展示颜色的红色通道强度
- 可按需切换x/y轴为
light(光照条件),分组观察不同环境下的颜色差异
2. 红色分量与环境因子的关联分析图
如果重点关注红色分量的变化,可用以下方式展示其与湿度、温度的相关性:
2.1 双变量散点图(带拟合线)
# 红色分量 vs 温度 ggplot(df1, aes(x = temp, y = red)) + geom_point(aes(color = stem_color), size = 3) + scale_color_identity() + geom_smooth(method = "lm", se = FALSE, color = "darkgray") + labs(x = "温度", y = "红色分量值", title = "红色分量随温度的变化") + theme_minimal() # 红色分量 vs 湿度 ggplot(df1, aes(x = moisture, y = red)) + geom_point(aes(color = stem_color), size = 3) + scale_color_identity() + geom_smooth(method = "lm", se = FALSE, color = "darkgray") + labs(x = "湿度", y = "红色分量值", title = "红色分量随湿度的变化") + theme_minimal()
2.2 多变量配对图
一次性展示所有变量间的关系:
pairs(df1[, c("moisture", "temp", "red")], col = df1$stem_color, pch = 16, main = "环境因子与红色分量的配对关系")
3. 热图(适合样本量扩充后)
如果后续收集更多样本,可将温度/湿度作为坐标轴,红色分量(或颜色的综合指标)作为填充值,绘制热图:
library(reshape2) # 转换数据格式 df_melt <- melt(df1[, c("moisture", "temp", "red")], id.vars = c("moisture", "temp")) ggplot(df_melt, aes(x = temp, y = moisture)) + geom_tile(aes(fill = value), color = "white") + geom_text(aes(label = round(value, 1)), color = "black") + scale_fill_gradient(low = "#333333", high = "#ff0000") + labs(x = "温度", y = "湿度", fill = "红色分量值", title = "红色分量的热图分布") + theme_minimal()
补充提示:
- 若想使用颜色的完整RGB信息,可通过
col2rgb(df1$stem_color)提取绿、蓝分量,加入分析 - 样本量较少时,散点图是最直观的选择;样本量足够后,热图能更好展示变量间的连续变化关系
内容的提问来源于stack exchange,提问作者ElizaBeso000
相关产品推荐
相关产品推荐

