本教程参考书籍《R语言可视化之美》、《R Graphics Cookbook》、《R语言可视化教程》、《ggplot2: Elegant Graphics for Data Analysis 》等,希望可以和大家一起交流讨论R语言科学可视化

前言

之前的可视化工作,我一般使用python,但是由于学习计算生物学,许多数据依托R完成分析,因此接触了R语言;R语言整体比较简单,且提供多样化的可视化选择,因此无论是在日常科研可视化还是在商业可视化中都是很好的选择。

科研图表主要有:数据可视化图、实验图、流程图等。科研绘图应该关注的问题有:准确/真实/信息量/数据表现形式等问题,其中最需要关注的是数据本身,因此在可视化之前一定要足够了解数据本身,才能选择合适不同数据的可视化方式。可视化主要目的是为了做到:定性(分类)、定量(数值),因此需要明确数据可视化目标。平时有空可以多看看nature、cell、science上的养眼图片,如:

当然在投稿前一定要了解期刊的可视化规范,一般也得做到:规范、简洁、专业、美观。

ggplot安装

R语言命令行运行

install.packages('ggplot2')

这样就安装成功了

#如果安装不成功可以手动安装:

R语言数据基础

类型

有数值numeric、字符character、日期date、逻辑logica(TRUE/FALSE)四种,我们以一些小练习来快速掌握这四种类型数据:

#用class判断简单数据类型

nu1 <- 123

nu2 <-321

ch <- "david"

da <- as.Date("2024-01-27")

da2 <-as.POSIXct("2024-01-27 15:54")#同时存储时间和日期

###########

class(nu1)

class("nu2")

class(ch)

class(da)

class(da2)

#也可以进行布尔判断

is.numeric(nu1) #TURE

#判断字符长度

nchar(ch)

#提取年月周为数字类型

Year <- as.numeric(strftime(da,"%Y"))

Month <- as.numeric(strftime(da,"%m"))

Week <- as.numeric(strftime(da,"%W"))

结构

有列表list、矩阵matrix、dataframe、向量vector、数组array几种,在生物科研中比较常见df和matrix数据结构,如在组学数据分析中,常以表达矩阵进行下一步的分析及可视化,当然在一些绘图小技巧,如自定义X/Y轴坐标及颜色中,vector起到重要作用。也是以一些程序快速熟悉一下:

# 矩阵

matrix <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3, ncol = 3, byrow = TRUE,

dimnames = list(c("A", "B", "C"), c("X", "Y", "Z")))

print(matrix)

# 数据框

dataframe <- data.frame(name = c("A", "B", "C"), age = c(20, 25, 30), city = c("New York", "Los Angeles", "Chicago"))

print(dataframe)

#小操作

df1 <- dataframe$name #选取列

df2 <- dataframe['name','city'] #选取多列

dim(dataframe) #看维度

view(dataframe)

head(dataframe,n=2) #常用这个来看前n行

# 数组

array <- array(c(1, 2, 3, 4, 5, 6, 7, 8, 9), dim = c(3, 3, 2),

dimnames = list(c("A", "B", "C"), c("X", "Y", "Z"), c("M", "N")))

print(array)

# 列表

list <- list(a = list(1, 2, 3), b = list(4, 5, 6), c = list(7, 8, 9))

print(list)

# 向量

vector <- c(1, 2, 9, 4, 5)

print(vector)

# 对向量进行操作

vector^2

sum(vector)

mean(vector)

median(vector)

max(vector)

min(vector)

sort(vector)

unique(vector)#去除重复,显示唯一

length(vector)

sort(vector)#排序

#离散化处理

nu_vect <- c(11,4,5,1,7,8)

cut_vect <- cut(nu_vect,breaks = c(0,1,4,6,8,10,12),

label = c("0~2","2-4","4-6","6-8","8-10",">10"),

right = TRUE)

print(cut_vect)

csv数据读取输出

我们做生物数据,以后养成习惯都用csv格式,不然很大的数据打不开

R语言读取csv数据:

read.csv(file, header = TRUE, sep = ",", quote = "\"",

dec = ".", fill = TRUE, comment.char = "", ...)

file: 指定要读取的 CSV 文件的路径。它可以是一个本地文件的路径,也可以是一个指向网络文件的 URL。header: 如果文件中有标题行(列名),那么这个参数应该设置为 TRUE。默认值为 TRUE。sep: 用来指定字段之间的分隔符。默认情况下,read.csv 使用逗号(,)作为分隔符,但如果你正在处理的文件使用不同的分隔符,比如制表符(\t)或者分号(;),那么就需要相应地修改这个参数。dec: 这个参数用来指定小数点使用的字符。例如,如果你正在读取的文件中使用句点(.)作为小数点,那么这个参数就应该设置为 "."。fill: 一个逻辑值,用来指示是否在数据不完整时填充空白字段。默认情况下,read.csv 会在空白字段处填充 NA。quote: 这个参数用来指定用于引号的字符。默认情况下,read.csv 使用双引号(")。stringAsFactors: 一个逻辑值,用来指示是否将字符型列转换为因子(factor)类型。默认情况下,read.csv 会将字符型列转换为因子,但有时候你可能希望保留它们为字符型,以提高计算效率或者保持数据的原始格式。

其他参数可以输入?read.csv了解

#注意windows读取文件路径复制后要把\换成/或者\\      比如:

df <- read.csv("C:\\Users\\Huzhuocheng\\Desktop\\C7可视化.csv")

csv文件输出

write.csv(data, file = "output.csv", row.names = FALSE, col.names = FALSE)

这将把data数据框的内容写入到output.csv文件中,且不包含行名和列名。

更多参数输入?write.csv查看

TXT格式文件输入输出

write.csv换为write.table,read.csv换为read.table即可

简单数据清洗

咱们生物人,处理生物数据,最关注的就是缺失值和0值的处理,这里提供几条简单方案:

if (!require("tidyr", quietly = TRUE))

install.packages("tidyr")

library(tidyr)

tidyr::drop_na(df,y)#删除有NA的行

tidyr::fill(df,y)#用相邻元素填充NA

tidyr::fill(df,list(y = 0))#用0去填充NA

ok,今天主要介绍了一下包的安装及数据的基本认识及处理。

虽然还没有正式开始介绍可视化,但是这是日后可视化工作中不可缺少的基础,如果你已经掌握了,那就准备好转战下一篇文章正式开始可视化喽。

第一篇长篇,谢谢大家点赞支持!!!

推荐链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。