R语言画图的-- ggplot2(实现图例的精细修改)

这篇具有很好参考价值的文章主要介绍了R语言画图的-- ggplot2(实现图例的精细修改)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ggplot2是R中用来作图的很强的包,但是其用法比较多且各种参数比较复杂,我自己使用的时候还经常需要查阅一些关键参数等,因此想要写一个rggplot2的作图文档,方便自己查阅。

但是今天突然发现了一个网站,这个网站里面包含了ggplot2作图的几乎所有内容。有各种图的制作,参数的说明,图的图例的调整等;而且还赋上了代码以及跟参数的使用说明,可以说十分的详细, 以后可以专门对它做个介绍。这个网站的地址是:The R Graph Gallery

今天主要介绍ggplot2的图修改,以及部分常见的问题,后续会一直更新的。

1. theme函数实现图的全局修改
  1. theme函数中的位置详解图, 其主要分为5个元素 : (整幅图的(plot),坐标轴的(axis),图例的(legend),面板的(panel)和分面元素(facet))
    此处文章引自–链接: link

R语言画图的-- ggplot2(实现图例的精细修改),r语言,python,开发语言
用法:
theme函数其实很简单:
theme(主题.部件=element_类型())
主题:plot, axis, legend, panel, facet
部件:title(名字,坐标轴名字), line(线,坐标轴的xy轴), text(标签,坐标轴刻度的数字), ticks(坐标轴刻度的小线条), background(背景)等
类型:rect,line,text
说明:部件要和类型一致。比如,部件为title,text等文字相关的元素,那么类型处就为text。

  1. 整幅图的主题设置
library(tidyverse)
head(mtcars)

p1=ggplot(mtcars,aes(mpg,disp))+geom_point()
p2=ggplot(mtcars,aes(mpg,disp,color=cyl))+geom_point()


#1.整幅图的主题设置
p1+labs(title="xyz")+theme(
  plot.background = element_rect(fill = "green", color = "lightgreen", size = 10),
  plot.title = element_text(hjust = 1, color = "red", face = "italic"),
  plot.margin = margin(t = 30, r = 30, b = 30, l = 30, unit = "pt")
)

#2.坐标轴主题设置
p1+theme(
 axis.line = element_line(color = "green", size = 2),
 axis.ticks = element_line(color = "red", size = 3),
 axis.title = element_text(color = "grey", face = "italic"),
 axis.text = element_text(color = "pink"),
 axis.text.x = element_text(angle = 45, hjust = 1)
)

#3.面板元素设置
p1+ theme(
 panel.background = element_rect(fill = "pink", color = "blue"),
 panel.grid = element_line(color = "grey80", size = 0.5)
)

#4.图例设置
p2+theme(
 legend.background = element_rect(fill = "grey"),
 legend.title = element_text(color = "green", size = 10),
 legend.key = element_rect(fill = "black"),
 legend.text = element_text(color = "red"),
 legend.margin = margin(t = 20, r = 10, b = 10, l = 10, unit = "pt"),
 legend.position = "top"
)


#5 图的自动输出
# ggsave 保存pdf
ggsave("df3a.pdf")

# export中graph2ppt 保存ppt给格式
library(export)
graph2ppt(file = "df3a.ppt", append=T)



2. 图的精确修改

例子:

# 先搞一个图出来
rm(list = ls())
data=data.frame(data_c=1:10,data_i=1:10)

library(ggplot2)
p = ggplot(data,aes(x=s1,y=s2,size=s2))+geom_point()

在图p中修改属性, 下面几乎包含图的精细修改的所有部分, 其他不太常用:


  p+
  # 添加背景
  theme_bw()+

  # 添加title和x轴,y轴的名称
  # legend包含colour和shape的因子,就可以使用者两个参数来调节其名字
  # fill 更改legend的title
  labs(title='xxxx',y="xxxx",x="xxxx", colour = "xxxx",shape = "xxxx", fill='xxxxx')+
  
  # 调节title的位置和字体大小
  theme(plot.title=element_text(hjust=0.5,size = 20))+
  
  # 调节纵坐标轴的刻度字母大小
  theme(axis.text.y = element_text(size = 20))+
  # 调节横坐标轴的刻度字母大小
  theme(axis.text.x = element_text(size = 20))+
  
  # 调节纵坐标的title的大小
  theme(axis.title.y = element_text(size = 20))+
  # 调节横坐标的title的大小
  theme(axis.title.x = element_text(size = 20))+
  
  # 调节legend的大小(包含title 和内容)
  theme(legend.text=element_text(size=15))+
  theme(legend.title =element_text(size=20))+
  
  # 坐标轴刻度字条旋转角度
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +

  # 改变横纵坐标的值
  scale_x_continuous(breaks=1:10,labels=1:10)+
  # 改变横纵坐标上刻度的排列方向
  scale_x_reverse()+
  
  # 调节y轴的长度
  ylim(0,100)+ 
  #调节x轴的长度
  xlim(0.7, 1.0)+
  
3. 其他修改
1. 坐标轴的排序:

我们可以通过scale_x_discrete中的limits对离散型坐标轴随意设置坐标轴先后。

    1. 数字型连续向量只能从大到小或者从小到大排列,不能改变顺序, 可以变为字符类型(as.character())----再排序
    1. 只有字符串类型才可以改变坐标轴刻度的顺序
# 根据实际图的坐标上的内容来进行排序
p+scale_x_discrete(limits=as.character(c(1,2,10,3,5,6,7,4,8,9)))


# 或者
# 将数据转换为字符类型,然后转换为factor因子,然后排序, 最后直接画图就好了
data$data_c=as.character(data$data_c)
data$data_c=factor(data$data_c,levels =c(1,2,10,3,5,6,7,4,8,9))    # factor设置level来设置先后顺序


2. 实现一页多图

cowplotpatchworkggpubr, 可以通过??+函数名来查找更详细的参数设置

## 构造数据和图
x<-c(1:5)
y<-x
xy<-data.frame(x,y)
a <- ggplot(xy,aes(x,y))+geom_point()+theme_few()
b <- ggplot(xy,aes(x,y))+geom_point()+ theme_calc()
c<-ggplot(xy,aes(x,y))+geom_point()


## 方法一
library(cowplot)
cowplot::plot_grid(a,b,c)   #直接绘图
cowplot::plot_grid(a,b,c,nrow=2,labels = c('one', 'two', 'three'),
                   label_size = 20,rel_widths = c(1,2),rel_heights = c(2,1))# 调整一些图的比列,label问提



## 方法二
install.packages("patchwork")
library(patchwork)
a+b+c   
a/(b+c)   # a图在第一行,  b,c图在第二行


## 方法三
install.packages("ggpubr")
library(ggpubr)
ggarrange(a,b,c)
4. 具体作图中的参数修改(某些特殊的参数)
柱状图的参数修改

position参数的设置

  • stack:堆叠图
  • fill:填满纵坐标轴
  • dodge:堆叠改为并排
数据准备:
   cluster      variable value
1        I genome.number    50
2      III genome.number     7
3       IV genome.number     2
4      XIa genome.number     1
5     XIVa genome.number    13
6     XIVb genome.number     3
7      XVI genome.number     1
8        I   bins_number    65
9      III   bins_number     0
10      IV   bins_number    41
11     XIa   bins_number     0
12    XIVa   bins_number   104
13    XIVb   bins_number     0
14     XVI   bins_number    59

#1, 展示stack
ggplot(data, aes(x=cluster,y=value,fill=variable))+
  geom_bar(stat = "identity", position = "stack")
#2 展示fill
ggplot(data, aes(x=cluster,y=value,fill=variable))+
  geom_bar(stat = "identity", position = "fill")

#3 展示dodge
ggplot(data, aes(x=cluster,y=value,fill=variable))+
  geom_bar(stat = "identity", position = "dodge")

图示1 展示stack:
R语言画图的-- ggplot2(实现图例的精细修改),r语言,python,开发语言
图示2,展示fill
R语言画图的-- ggplot2(实现图例的精细修改),r语言,python,开发语言
图示3,展示dodge
R语言画图的-- ggplot2(实现图例的精细修改),r语言,python,开发语言

写在最后

作为一个科研小渣渣,科研时间勉强又续费了4年。3年前,创建了CSDN账号,一直在分享一些技术方面的东西,包括python, r以及前后端的知识。今天又创建了一个公众号,接下来的几年会再接再厉,继续分享一些技术性的文档,另外还会分享一些写作方面和生活方面的文档,十分谢谢大家的关注。

声明: 文章部分引用自其他文章,如有侵权,请联系删除。文章来源地址https://www.toymoban.com/news/detail-648197.html

到了这里,关于R语言画图的-- ggplot2(实现图例的精细修改)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言tidyverse教程:ggplot2绘图初步

    R语言系列: 编程基础💎循环语句💎向量、矩阵和数组💎列表、数据帧 排序函数💎apply系列函数 tidyverse :readr💎tibble ggplot2有其独特的绘图语法,想要实现数据绘图,除了数据和集合形状之外,还需要一个叫做 aesthetic 的东西,这个不知道应该怎么翻,后面就统一叫做美术

    2024年02月04日
    浏览(15)
  • R语言ggplot2 | R语言绘制物种组成面积图(三)

       利用R语言绘制物种组成图。本文以堆叠面积图的方式与大家分享。 面积图又叫区域图。它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充,这样一个填充区域我们叫面积。颜色的填充可以更好地突出趋势信息(比如时

    2024年02月13日
    浏览(13)
  • R 语言 ggplot2 PCA 主成分分析(虚拟数据集)

    以上代码生成了100行基因,10列样本的矩阵 前五列命名 wt 开头+ 1-5 ,表示正常基因 后五列命名 ko 开头+ 1-5 ,表示缺少基因的样本(knock-out) 给每行基因都统一命名 gene + 1-100 head() 函数默认查看前6行 现在只是定义了矩阵的shape和name,还没填充数值 这段代码的作用是生成一个

    2024年02月11日
    浏览(14)
  • R语言实践——ggplot2+ggrepel绘制散点+优化注释文本位置

    书接adjustText实践——调整matplotlib散点图标签,避免重复 上文中,matplotlib+adjustText对于我的实例来说并没有起到很好的效果。所以,博主决定在R中利用gglot2+ggrepel绘制,期待效果。 博主不常使用R,在此过程中详细记录每一步骤,以作备忘。 2.1 快速绘制散点图(plot) 2.2 ge

    2023年04月11日
    浏览(50)
  • 跟着NatureMetabolism学作图:R语言ggplot2转录组差异表达火山图

    论文 Independent phenotypic plasticity axes define distinct obesity sub-types https://www.nature.com/articles/s42255-022-00629-2#Sec15 s42255-022-00629-2.pdf 论文中没有公开代码,但是所有作图数据都公开了,我们可以试着用论文中提供的数据模仿论文中的图 今天的推文重复一下论文中的Fig3b 差异表达火山图

    2024年02月08日
    浏览(23)
  • R语言数据绘图学习(0x01)-安装ggplot2与尝试

    一直听说数据分析里R语言是比较‘正统’,况且久闻ggplot2这些R语言的数据分析库大名,想到今后数据分析和整理的需要,这里开一个简单的系列学习一些R语言和ggplot2的绘图基础。本人学习的书籍是Winston Chang大佬的《R Graphics Cookbook》,且稍有一点Python里的Plotnine绘图基础。

    2024年02月04日
    浏览(18)
  • R语言中使用ggplot2绘制散点图箱线图,附加显著性检验

    散点图可以直观反映数据的分布,箱线图可以展示均值等关键统计量,二者结合能够清晰呈现数据蕴含的信息。 本篇笔记主要内容:介绍R语言中绘制箱线图和散点图的方法,以及二者结合展示教程,添加差异比较显著性分析,绘制如上结果图。 在实际数据可视化过程中,输

    2024年03月20日
    浏览(23)
  • ggplot2关于设置标签和注释

    在ggplot2包内,最主要用以设置标签的函数即geom_text() 字体的设置利用的是 family 参数,其中可以选择sans(黑体)、serif(宋体)、mono(等宽字体) 字体风格分为默认(plain)、粗体(bold)和斜体(italic),而字体风格由fontface参数来控制 字体的对齐方式,由hjust和vjust来设置

    2024年02月06日
    浏览(19)
  • [R] How to communicate with your data? - ggplot2

    We have gone through the basic part of how to clean and process before analyzing your data. R语言具有生成各种图形的多种可能性。 并非所有图形功能对初学者来说都是必要的。 复杂的图形需要长代码。 我们将从简单的图形元素开始,然后逐步定制复杂图形。 Which package do we need: ggplot 2 library (

    2024年03月11日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包