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

news2024/11/24 7:07:07

文章目录

        • 1. theme函数实现图的全局修改
        • 2. 图的精确修改
        • 3. 其他修改
          • 1. 坐标轴的排序:
          • 2. 实现一页多图
        • 4. 具体作图中的参数修改(某些特殊的参数)
          • 柱状图的参数修改
        • 写在最后

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

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

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

1. theme函数实现图的全局修改

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

在这里插入图片描述
用法:
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的因子,就可以使用者两个参数来调节其名字
  labs(title='xxxx',y="xxxx",x="xxxx", colour = "xxxx",shape = "xxxx")+
  
  # 调节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:
在这里插入图片描述
图示2,展示fill
在这里插入图片描述
图示3,展示dodge
在这里插入图片描述

写在最后

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

声明: 文章部分引用自其他文章,如有侵权,请联系删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

司徒理财:8.15早盘黄金1905多,最新操作建议

黄金昨日虽然再次新低&#xff0c;但是在司徒所强调的1902位置企稳&#xff0c;反弹即将开启&#xff0c;早盘依托1902的支撑低多看涨&#xff0c;1905现价可以直接多&#xff01;黄金本次的下跌已经接近尾声&#xff0c;弱不再弱必转强&#xff01;长时间大幅度的下跌后必将迎…

电脑剪辑用哪个软件比较好?电脑视频剪辑软件分享

在电脑上剪辑视频可以让您更容易地编辑和组织素材&#xff0c;以及添加音频、标题和其他效果。此外&#xff0c;电脑上的剪辑软件通常比手机上的应用程序更强大&#xff0c;使我们可以进行更精细的编辑&#xff0c;并获得更好的最终产品。那么电脑剪辑视频哪个软件比较好用呢&a…

创建maven的Springboot项目出现错误:Cannot access alimaven

创建maven的Springboot项目出现错误&#xff1a;Cannot access alimaven 1&#xff09;问题2) 分析问题3&#xff09;解决问题 1&#xff09;问题 创建maven的Springboot项目出现错误&#xff1a; Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/p…

开学季电容笔怎么选?iPad第三方电容笔了解下

不少的学生党开学必备清单里都少不了电容笔&#xff0c;可见其的重要性。自从苹果发布了ipad的原装电容笔以来&#xff0c;这款电容笔在目前市面上就一直很受欢迎&#xff0c;不过由于Apple Pencil的售价实在是太贵了&#xff0c;使得大部分人都买不起。于是&#xff0c;市面上…

【LeetCode】242 . 有效的字母异位词

242 . 有效的字母异位词&#xff08;简单&#xff09; 方法&#xff1a;哈希表 思路 首先判断两个字符串长度是否相等&#xff0c;不相等直接返回 false&#xff1b;接下来设置一个长度为26 的哈希表&#xff0c;分别对应26个小写字母&#xff1b;遍历两个字符串&#xff0c;…

【虚幻引擎】UE5数字人的创建

安装插件 在插件里面找到MetaHuman&#xff0c;设置激活&#xff0c;然后重启引擎 找到bridge&#xff0c;并开启&#xff0c;这个需要我们制作完成的metahuman需要在这个插件里下载&#xff0c;unreal5自动安装 创建metahuman 首先添加一个metahuman本体&#xff0c;如果你的插…

log4net使用

一. Log4Net简介 Log4net是从Java中的Log4j迁移过来的一个.Net版的开源日志框架&#xff0c;它的功能很强大&#xff0c;可以将日志分为不同的等级&#xff0c;以不同的格式输出到不同的存储介质中&#xff0c;比如&#xff1a;数据库、txt文件、内存缓冲区、邮件、控制台、ANS…

02.用户信息UserDetails相关入门

1. 前言 前一篇介绍了 Spring Security 入门的基础准备。从这篇开始我们来一步步窥探它是如何工作的。我们又该如何驾驭它。本篇将通过 Spring Boot 2.x 来讲解 Spring Security 中的用户主体UserDetails。以及从中找点乐子。 2. Spring Boot 集成 Spring Security 这个简直…

同比增长近4倍!5G智能座舱爆发

5G智能座舱&#xff0c;正在进入爆发期。 高工智能汽车研究院监测数据显示&#xff0c;2023年1-6月中国市场&#xff08;不含进出口&#xff09;乘用车前装标配5G智能座舱交付63.18万辆&#xff08;含选装&#xff09;&#xff0c;同比增长370.09%。 同时&#xff0c;5G与车载智…

透镜天线的分类、特点及龙伯球透镜天线原理

透镜天线&#xff0c;一种能够通过电磁波&#xff0c;将点源或线源的球面波或柱面波转换为平面波从而获得笔形、扇形或其他形状波束的天线。通过合适设计透镜表面形状和折射率n&#xff0c;调节电磁波的相速以获得辐射口径上的平面波前。透镜天线吸收了许多光信息工程技术&…

蓝牙资讯|苹果智能戒指可以通过多个戒指控制用户界面

近日&#xff0c;美国专利商标局公布了苹果公司的一项专利申请&#xff0c;涉及使用单个或多个智能指环来控制用户界面的各个方面。Apple Vision Pro 使用眼动追踪和摄像头来监控用户手指的空中手势控制 visionOS&#xff0c;就像鼠标使用 Mac 一样&#xff0c;戒指专利有一个明…

问道管理:三大股指触底反弹 AI算力方向再度崛起

周一&#xff0c;受人民币汇率动摇等要素影响&#xff0c;A股三大股指早盘深度回撤&#xff0c;沪指盘中创出1月中旬以来新低。午间休市前后&#xff0c;券商与人工智能板块相继发力&#xff0c;带动股指止跌回升&#xff0c;大盘终究以全天的相对高点报收。 截至14日收盘&…

【微服务技术一】Eureka、Nacos、Ribbon(配置管理、注册中心、负载均衡)

微服务技术一 技术栈图一、注册中心Eureka概念&#xff1a;搭建EurekaServer服务注册服务发现&#xff08;消费者对提供者的远程调用&#xff09; 二、Ribbon负载均衡负载均衡的原理&#xff1a;LoadBalanced负载均衡的策略&#xff1a;IRule懒加载 三、Nacos注册中心Nacos的安…

国内芯片厂商创新突破,助力国产替代持续加速

近日&#xff0c;中商产业研究院发布最新研究报告显示&#xff0c;今年1~5月份中国进口集成电路为1865亿件&#xff0c;同比下降19.6%&#xff0c;同比去年5个月累计少进口了455亿颗&#xff0c;平均每天少进口3亿颗。与此同时&#xff0c;英特尔、AMD、美光、三星、SK海力士等…

面试题解析 | 为什么Redis使用单线程性能会优于多线程?

大家好&#xff0c;我是小米&#xff01;今天我要和大家聊一个有关Redis的热门面试题&#xff1a;为什么Redis使用单线程性能会优于多线程&#xff1f;相信这个问题在很多同学心中都曾经纠结过&#xff0c;那么接下来&#xff0c;就让我们一起来揭开这个技术之谜吧&#xff01;…

flac格式如何转mp3?简单的音频格式转换方法分享

FLAC格式音频的缺点主要在于文件大小较大&#xff0c;相比于MP3和AAC等有损压缩格式&#xff0c;FLAC的压缩率较低&#xff0c;因此占用的存储空间更多。此外&#xff0c;由于FLAC格式相对较新&#xff0c;不是所有的音频设备都支持该格式。那么我们怎么将FLAC格式音频转成MP3格…

python质检工具(pylint)安装使用总结

1、Pylint Pylint工具主要类似java中的checkStyle和findbugs,是检查代码样式和逻辑规范的工具。 1.1、Pylint安装流程: 打开PyCharm软件,打开如图1.1所示Terminal终端窗口,先查看python版本和pip版本,pip是19.0.3,python是2.7 图1.1 运行pip install pylint安装pylin…

2023全球创见者大会|企企通总架构师杨华:基于SRM的电子发票解决方案, 破局企业开票困局

01、2023全球创见者大会 2023年8月8日&#xff0c;金蝶30周年庆典&2023全球创见者大会在深圳国际会展中心隆重举行。现场吸引了4000与会来宾齐聚一堂&#xff0c;超过100位演讲嘉宾组成豪华阵容&#xff0c;举办16场行业峰会&#xff0c;呈现了一场数字化领域备受瞩目…

PCIe接口的PCB布局布线要求

PCI-Express&#xff0c;简称“PCI-e”是一种高速串行计算机扩展总线标准&#xff0c;PCI-E属于高速串行点对点双通道高带宽传输&#xff0c;所连接的设备分配独享通道带宽&#xff0c;不共享总线带宽&#xff0c;它的主要优势就是数据传输速率高。 PCI-E2.0和PCI-E3.0主要存在…

国家唯一认证的祛斑产品,安全好用温和的一款

国家唯一认证的祛斑产品露卡菲娅祛斑套装效果好么&#xff1f;对于减少肌肤暗沉&#xff0c;美白祛斑&#xff0c;这是护肤界经久不衰的话题。拥有白嫩无瑕的肌肤&#xff0c;整个人的气质也是会提高很多&#xff0c;所以在追求美白的道路上&#xff0c;我们一直执着追求&#…