查看原文
其他

R可视化——图片颜色提取及应用(以jpg格式图片为例)

王志山 科研后花园 2023-09-08

设置工作目录、加载R包

rm(list = ls())#设置工作目录setwd("D:\\图片颜色提取")#加载R包library(RImagePalette)library(imager)library(scales)library(ggplot2)library(ggprism)library(reshape)library(ggalluvial)

加载图片并提取颜色

1、图片加载及预览——jpg格式图片加载主要基于imager包中的load.image()函数:

##图1imgjpg1 <- load.image("test1.jpg")#读取图片plot(imgjpg1,xlim = c(1,width(imgjpg1)),ylim = c(height(imgjpg1),1)) #显示图片

2、提取图片颜色——主要基于RImagePalette包中的image_palette()函数:

#提取图片颜色df_color1 <- image_palette(imgjpg1,n=10)show_col(df_color1)#展示

3、同样的原理提取其他图片颜色:

##图2imgjpg2 <- load.image("test2.jpg")#读取图片plot(imgjpg2,xlim = c(1,width(imgjpg2)),ylim = c(height(imgjpg2),1)) #显示图片#提取图片颜色df_color2 <- image_palette(imgjpg2,n=10)show_col(df_color2)


##图3imgjpg3 <- load.image("test3.jpg")#读取图片plot(imgjpg3,xlim = c(1,width(imgjpg3)),ylim = c(height(imgjpg3),1)) #显示图片#提取图片颜色df_color3 <- image_palette(imgjpg3,n=10)show_col(df_color3)

##图4imgjpg4 <- load.image("test4.jpg")#读取图片plot(imgjpg4,xlim = c(1,width(imgjpg4)),ylim = c(height(imgjpg4),1)) #显示图片#提取图片颜色df_color4 <- image_palette(imgjpg4,n=10)show_col(df_color4)

应用提取图片的颜色绘图

1、构造绘图数据

df<-data.frame(samples=c('a','b','c','d','e','f','g','h','i','j'), A=c(0.12,0.15,0.1,0.07,0.1,0.1,0.08,0.1,0.13,0.05), B=c(0.35,0.1,0.05,0.05,0.05,0.1,0.1,0.05,0.1,0.05), C=c(0.25,0.15,0.1,0.07,0.1,0.1,0.05,0.05,0.08,0.05), D=c(0.05,0.2,0.1,0.2,0.1,0.1,0.1,0.05,0.05,0.05))#变量格式转换,宽数据转化为长数据,方便后续作图df1 <- melt(df,id.vars = 'samples',measure.vars = c('A','B','C','D'))names(df1)[1:2] <- c("group","X") #修改列名


2、绘图

#绘图p<-ggplot(df1, aes( x = X,y=100 * value,fill = group, stratum = group, alluvium = group))+  geom_stratum(width = 0.7, color='white')+  geom_alluvium(alpha = 0.5,                width = 0.7,                color='white',                size = 1, curve_type = "linear")+ scale_y_continuous(expand = c(0,0))+ labs(x="Samples",y="Relative Abundance(%)", fill="group")+ theme_prism(palette = "candy_bright",              base_fontface = "plain",               base_family = "serif",               base_size = 16,               base_line_size = 0.8,  axis_text_angle = 45)+ theme(legend.position = 'top')p

3、应用绘图颜色并拼图

#应用颜色p2<-p+scale_fill_manual(values = df_color1)p3<-p+scale_fill_manual(values = df_color2)p4<-p+scale_fill_manual(values = df_color3)p5<-p+scale_fill_manual(values = df_color4)#拼图cowplot::plot_grid(p2,p3,p4,p5,ncol = 2)



图片来源于网络(https://zhuanlan.zhihu.com/p/155963612),仅用于学习交流!

爱我请给我好看!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存