前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Learn R 画图1-3

Learn R 画图1-3

原创
作者头像
用户10412487
修改2023-03-28 21:48:06
7060
修改2023-03-28 21:48:06
举报
文章被收录于专栏:生信技能树-R生信技能树-R

R包下载设置镜像

代码语言:txt
复制
>options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
#安装R包
>if(!require(ggplot2))install.packages('ggplot2',update = F,ask = F)
>if(!require(ggpubr))install.packages('ggpubr',update = F,ask = F)
>if(!require(eoffice))install.packages("eoffice",update = F,ask = F)
>if(!require(patchwork))install.packages("patchwork",update = F,ask = F)
#加载以检查是否安装成功
>library(ggplot2)
>library(ggpubr)
>library(eoffice)
>library(patchwork)

常用的可视化R包

1.作图 2.拼图 3.导出

常用的可视化R包
常用的可视化R包

基础包(basese)绘图函数

基础包(basese)绘图函数
基础包(basese)绘图函数

1.基础包

代码语言:txt
复制
> plot(iris[,1],iris[,3],col = iris[,5]) 
#x轴-iris[,1],y轴-iris[,3]
> text(6.5,4, labels = 'hello')
#6.5,4-坐标 labels = 'xxx' 添加标签
>dev.off() #关闭画板
#1.基础包
#1.基础包

2.ggplot2 中坚力量,语法有个性

代码语言:txt
复制
> library(ggplot2)
> ggplot(data = iris)+
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length,
+                            color = Species))
#2.ggplot2
#2.ggplot2

3.ggpubr 新手友好型 ggplot2简化和美化 褒贬不一

代码语言:txt
复制
> library(ggpubr)
> ggscatter(iris,
+           x="Sepal.Length",
+           y="Petal.Length",
+           color="Species")
ggpubr 新手友好型
ggpubr 新手友好型

ggplot2

1.入门级绘图模板:作图数据,横纵坐标

ggplot2代码模板

代码语言:txt
复制
>library(ggplot2)
>ggplot(data = <DATA>)+
  <GEOM_FUNCTION>(mapping=aes(<MAPPINGS>))

#<大写>代表着模版不是具体的代码

#<GEOM_FUNCTION>代表画图的函数

#<MAPPINGS>写横纵坐标 列名不带“”

#“+”代表ggplot()和geom_point()两个函数是同一张图

#ggplot2的特殊语法:列名不加引号,行末写加号

ggplot例子

代码语言:txt
复制
> ggplot(data = iris)+
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length))

2.属性设置(颜色、大小、透明度、点的形状,线型等)

2.1 手动设置,需要设置为有意义的值
代码语言:txt
复制
> ggplot(data = iris) + 
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length), 
+              color = "blue")
代码语言:txt
复制
>ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length), 
             size = 5,     # 点的大小5mm
             alpha = 0.5,  # 透明度 50%
             shape = 8)  # 点的形状

2.2 映射:按照数据框的某一列来定义图的某个属性,不是手动设置

代码语言:txt
复制
> ggplot(data = iris)+
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length,
+                            color = Species))
> ggplot(data = iris)+
## Q1 能不能自行指定映射的具体颜色?
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length,
+                            color = Species))+
   scale_color_manual(values = c("blue","grey","red"))

映射VS.手动设置

·映射根据数据的某一列的内容分配颜色
·手动设置:把图形设置为1个或者n个颜色,于数据内容无关
代码语言:txt
复制
#映射 aes()
>ggplot(data = iris)+
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length,
+                            color = Species) 
    #这个color是aes的参数,aes是不带引号的,存在于数据中的列名 ····映射
#手动设置
> ggplot(data = iris) + 
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length), 
+              color = "blue") 
    #这个color是geom_point的参数,是具体的颜色···手动设置

Q2 区分color和fill两个属性

Q2-1 空心形状和实心形状都用color设置颜色

代码语言:txt
复制
> ggplot(data = iris)+
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length,
+                            color = Species),
+              shape = 17) 
    #shape=17号,实心的例子
> ggplot(data = iris)+
+   geom_point(mapping = aes(x = Sepal.Length,
+                            y = Petal.Length,
+                            color = Species),
+              shape = 2) 
    #shape=2号,空心的例子

练习6-1

1.加载test.Rdata,分别test的以a和b列作为横纵坐标,change列映射颜色,画点图。

2.尝试修改点的颜色为暗绿色(darkgreen)、灰色、红色

代码语言:txt
复制
ggplot(data = test)+geom_point(mapping = aes(x=a,
                                             y=b,
                                             color=change))
ggplot(data = test)+geom_point(mapping = aes(x=a,
                                             y=b,
                                             color=change))+
  scale_color_manual(values = c("darkgreen","grey","red"))

ggplot 分面

1.单分面
代码语言:txt
复制
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + 
  facet_wrap(~ Species) #分面代码,根据species的取值分开
ggplot单分面
ggplot单分面
2.双分面
代码语言:txt
复制
#原本该数据中是没有group这一组的
dat = iris #不推荐用data做变量名称,data是个函数
dat$Group = sample(letters[1:5],150,replace = T) 
#sample(letters[1:5],150,replace = T) 
#sample()函数的意思是随机抽样,默认replace = F即不放回取样,无重复值
ggplot(data = dat) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + 
  facet_grid(Group ~ Species) 
  #group取值是横着的,species是竖着的
sample()函数
sample()函数
ggplot 双分面
ggplot 双分面
4.几何对象

#一个函数生成的所有的点所组成的图像,可用加号进行叠加

代码语言:txt
复制
ggplot(data = iris) + 
  geom_smooth(mapping = aes(x = Sepal.Length, 
                          y = Petal.Length))+
  geom_point(mapping = aes(x = Sepal.Length, 
                           y = Petal.Length))
 #两个图层叠在一起 ——局部设置 仅对当前图层有效
ggplot(data = iris,mapping = aes(x = Sepal.Length, y = Petal.Length))+
  geom_smooth()+
  geom_point()
  #两个图层叠在一起 ——全局设置 对所有图层有效
几何对象
几何对象
5.统计变换-直方图
代码语言:txt
复制
View(diamonds)
table(diamonds$cut) #统计取值
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut))

ggplot(data = diamonds) + 
  stat_count(mapping = aes(x = cut))
#这两个函数效果一样geom开头是画图函数,stat开头是统计变换函数
#x=cut是将cut作为横坐标,默认统计数为纵坐标,不用写y=
统计变换使用场景

#5.1.不统计,是用表里的数据直接做图

代码语言:txt
复制
fre = as.data.frame(table(diamonds$cut))
fre
ggplot(data = fre) +
  geom_bar(mapping = aes(x = Var1, y = Freq), stat = "identity") #自己想要写纵坐标 必须写上stat = "identity"

#5.2count改为prop(比例)

代码语言:txt
复制
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1)) 
  #group=1意思是各自占总比多少
5.2count改为prop
5.2count改为prop

练习6-2

代码语言:txt
复制
ggplot(data = iris,mapping = aes(x = Species,
                                 y = Sepal.Width,
                                 color = Species))+
  geom_boxplot()

ggplot(data = iris,mapping = aes(x = Species, 
                                y = Sepal.Width,
                                fill = Species)) + #color=换成fill=空心变实心
  geom_boxplot()+
  geom_point()
练习6-2
练习6-2
叠加过点图之后,但是真实样本下有50个样,该图把相近的值合并在一起了,真正的应为图1
叠加过点图之后,但是真实样本下有50个样,该图把相近的值合并在一起了,真正的应为图1
代码语言:txt
复制
#图一正确函数
geom_jitter()
图1
图1
6.位置关系
6.2堆叠直方图
代码语言:txt
复制
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut,fill=clarity))
堆叠直方图
堆叠直方图
6.3 并列直方图
代码语言:txt
复制
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")
并列直方图
并列直方图
7.坐标系

#翻转coord_flip()

代码语言:txt
复制
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot() +
  coord_flip()
翻转/极坐标系
翻转/极坐标系

#极坐标系coord_polar()

代码语言:txt
复制
bar <- ggplot(data = diamonds) + 
  geom_bar(
    mapping = aes(x = cut, fill = cut), 
    width = 1
  ) + 
  theme(aspect.ratio = 1) +
  labs(x = NULL, y = NULL)
bar
bar + coord_flip()
bar + coord_polar()

练习6-3

代码语言:txt
复制
ggplot(data = iris,mapping = aes(x = Species,y = Sepal.Width))+
  geom_violin(aes(fill = Species))+
  geom_boxplot()+
  geom_jitter(aes(shape = Species))+
  coord_flip()
#注意图的叠放顺序和函数写顺序有关,先写先放,谁有颜色谁写fill
练习6-3
练习6-3

ggpubr

可以进行赋值;代码简单 但参数少
代码语言:txt
复制
library(ggpubr)
> ggscatter(iris,x="Sepal.Length",
+           y="Petal.Length",
+           color="Species")
> p <- ggboxplot(iris, x = "Species",  #赋值
+                y = "Sepal.Length",
+                color = "Species", 
+                shape = "Species",
+                add = "jitter")
> p
> my_comparisons <- list( c("setosa", "versicolor"),  #添加p值要求为list格式
+                         c("setosa", "virginica"), #哪两个写在一起表示哪两个之间要画p值线
+                         c("versicolor", "virginica") )
> p + stat_compare_means(comparisons = my_comparisons)+ # Add pairwise comparisons p-value
+   stat_compare_means(label.y = 9)  #指定标签显示的Y轴位置,可使用参数label.y=
ggpubr
ggpubr
加p值线
加p值线

图片保存的三种方法

1.通用基础包作图的保存
代码语言:txt
复制
pdf("iris_box_ggpubr.pdf") #保存的格式及文件名
boxplot(iris[,1]~iris[,5])
text(6.5,4, labels = 'hello')
dev.off() #画完了,关闭画板
2.ggplot系列图(包括ggpubr)通用的简便保存 ggsave()
代码语言:txt
复制
p <- ggboxplot(iris, x = "Species", 
               y = "Sepal.Length",
               color = "Species", 
               shape = "Species",
               add = "jitter")
ggsave(p,filename = "iris_box_ggpubr.png") #保存ggpplot格式
3.eoffice包 导出为ppt,全部元素都是可编辑模式
代码语言:txt
复制
library(eoffice)
topptx(p,"iris_box_ggpubr.pptx") 

-----来自生信技能树----

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • R包下载设置镜像
  • 常用的可视化R包
    • 1.作图 2.拼图 3.导出
      • 1.基础包
      • 2.ggplot2 中坚力量,语法有个性
      • 3.ggpubr 新手友好型 ggplot2简化和美化 褒贬不一
  • 基础包(basese)绘图函数
  • ggplot2
    • 1.入门级绘图模板:作图数据,横纵坐标
      • ggplot2代码模板
      • ggplot例子
      • 2.属性设置(颜色、大小、透明度、点的形状,线型等)
      • 2.2 映射:按照数据框的某一列来定义图的某个属性,不是手动设置
      • 映射VS.手动设置
    • Q2 区分color和fill两个属性
      • Q2-1 空心形状和实心形状都用color设置颜色
      • ggplot 分面
  • 练习6-1
  • 1.加载test.Rdata,分别test的以a和b列作为横纵坐标,change列映射颜色,画点图。
  • 2.尝试修改点的颜色为暗绿色(darkgreen)、灰色、红色
    • 练习6-2
      • 练习6-3
        • ggpubr
        • 图片保存的三种方法
    相关产品与服务
    图数据库 KonisGraph
    图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档