原创内容,欢迎转载,转载请注明出处
主笔:于浩
一、R语言软件安装
1、系统和软件参考:R语言绘图基础
2、下载Demo数据,点击文章底部的“下载demo数据”下载demo数据和R脚本。
二、数据和脚本准备
R语言绘图就跟生物信息学的常规分析一样,主要就是数据格式的整理,脚本中参数的修改。数据整理好了,参数修改对了,直接运行就可以得到自己想要的结果。
1、将demo数据解压缩到D盘根目录的“R-Plot”文件夹下。
2、将绘图数据按照demo数据的格式填写到“input_table.csv”文件中,这里数据比较简单,其实就2列数据有用,value里面放上每组数据的具体的数值是多少,另一列里面放上顺序。
三、运行R脚本进行绘图
1、数据整理
下图就是数据格式,不要修改列明,否则在脚本中也要修改参数,直接把每一部分的值输入到value这一列,order这一列从小到大编写就行。
2、双击R脚本“PiePlot.R”,用RStudio打开脚本。
3、根据原始数据修改脚本,基本上没有什么要修改的参数,有些参数完全可以在其他的软件例如AI中修改,下面是代码。
library(ggplot2)
library(dplyr)
# 导入数据
df <-read.table("D:\\R-Plot\\input_table.csv", header=T,sep=",")
# 绘图模式 1
# 这里需要注意的是x的内容应该是'',不能用x=x。
ggplot(data=df, mapping=aes(x='', y=value, fill=order))+
# stat选择'identity'是为了使用y值作为具体的条形图高度值,stack是指模式为堆叠式条形图。
geom_bar(stat='identity', position='stack',color="white")+
# 改变坐标系,按照顺时针顺序来填充,从0开始
coord_polar(theta = 'y', start=0, direction=-1)+
# 自定义每个区块的颜色
scale_fill_manual(values = c("#74A9CF", "#dd0077", "#D0D1E6", "#FFF7FB","#0570B0"))+
# 去掉title,x和y轴的标题
labs(x = '', y = '', title = '')+
# 去掉内部的文本
theme(axis.text = element_blank())+
# 去掉边上的刻度线
theme(axis.ticks = element_blank())+
# 去掉背景和网格线
theme(panel.grid =element_blank(), panel.background = element_blank())
# 绘图模式 2
hsize <-2 # 环形图一共有几圈(调整这个参数可以调整环的厚薄)
df <- df %>% mutate(x = hsize) # 在数据的最外侧添加一列,列名为x,数值为 hsize
ggplot(df, aes(x = hsize, y = value, fill = order)) +
geom_col() +
geom_text(aes(label = value), position = position_stack(vjust = 0.5)) + # 这个就是两个堆叠柱形图,第一个柱形图的高度为0
coord_polar(theta = "y") + # 把两个柱形图的柱子给卷起来,用极坐标方式表示。
scale_fill_manual(values = c("#74A9CF", "#dd0077", "#D0D1E6", "#FFF7FB","#0570B0"))+ # 自定义每个区块的颜色
xlim(c(0.2, hsize + 0.5))
# 绘图模式 3 (没有坐标系)
hsize <-2 # 环形图一共有几圈(调整这个参数可以调整环的厚薄)
df <- df %>% mutate(x = hsize) # 在数据的最外侧添加一列,列名为x,数值为 hsize
ggplot(df, aes(x = hsize, y = value, fill = order))+
geom_col(color = "black")+ # 外框的颜色
geom_text(aes(label = value),
position = position_stack(vjust = 0.5))+
coord_polar(theta = "y")+ # 转换为极坐标,这是变成饼图的关键
scale_fill_manual(values = c("#74A9CF", "#dd0077", "#D0D1E6", "#FFF7FB","#0570B0"))+ # 自定义每个区块的颜色
xlim(c(0.2, hsize + 0.5))+
theme(panel.background = element_rect(fill = "white"), # 主题设置,这里是设置背景为白色,没有网格
panel.grid = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text = element_blank())
demo数据结果如下:数据另存为emf格式,用AI或者CDR来进行修改。
评论区