本教程参考书籍《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,今天主要介绍了一下包的安装及数据的基本认识及处理。
虽然还没有正式开始介绍可视化,但是这是日后可视化工作中不可缺少的基础,如果你已经掌握了,那就准备好转战下一篇文章正式开始可视化喽。
第一篇长篇,谢谢大家点赞支持!!!
推荐链接
发表评论