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

news2024/12/23 16:06:35

文章目录

      • 1. 图的精确修改
        • theme函数实现图的精细修改
        • 实现一页多图
        • 具体作图中的参数修改(某些特殊的参数)
          • 柱状图的参数修改

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

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

我就简单把之前积累的一些东西发出来,后面去详细了解一下该网站,再做介绍。

1. 图的精确修改

例子:

# 先搞一个图出俩
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)+
  

坐标轴的排序:

我们可以通过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来设置先后顺序


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)



实现一页多图

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)

具体作图中的参数修改(某些特殊的参数)

柱状图的参数修改

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
在这里插入图片描述

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

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

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

相关文章

Stable Diffusion + Deform制作指南

1.安装sd以及deform插件,更新后记得重启 需要安装ffmpeg https://ffmpeg.org/download.html 选择对应版本然后安装 如果是windows需要解压后将ffmpeg的bin目录配置在电脑的环境变量里面。 2.准备一张初始开始图片 3.填写参数,这里面参数要注意,宽高一定是32的倍数。如果填写…

R语言生存分析算法的简单组合

library(survival) library(randomForestSRC)# 生成模拟数据 set.seed(123) n <- 200 time <- rexp(n, rate 0.1) status <- rbinom(n, size 1, prob 0.7) var1 <- rnorm(n) var2 <- rnorm(n) var3 <- rnorm(n) data1 <- data.frame(time time, statu…

「网络」网络安全必须知道的19个知识分享

一、防火墙&#xff08;Firewall&#xff09; 定义&#xff1a;都知道防火墙是干什么用的&#xff0c;但我觉得需要特别提醒一下&#xff0c;防火墙抵御的是外部的攻击&#xff0c;并不能对内部的病毒 ( 如ARP病毒 ) 或攻击没什么太大作用。 功能 : 防火墙的功能主要是两个网…

『C语言初阶』第九章 -结构体

前言 今天小羊又来给铁汁们分享关于C语言的结构体&#xff0c;在C语言中&#xff0c;结构体类型属于一种构造类型&#xff08;其他的构造类型还有&#xff1a;数组类型&#xff0c;联合类型&#xff09;&#xff0c;今天我们主要简单了解一下结构体。 一、结构体是什么&#x…

02.FFMPEG的安装和添加硬件加速自编译

说一个极其郁闷的事情&#xff0c;就在昨天收到3399的一块板子后&#xff0c;往电脑上面一插&#xff0c;然后悲剧的事情就发生了&#xff0c;我的电脑蓝屏重启了&#xff0c;这下好了&#xff0c;我写到一半的帖子也不见了&#xff0c;我的SSH里面的记录全部消失了&#xff0c…

一文解析超标量处理器

一、引言 处理器&#xff08;central process unit,简称CPU&#xff09;是手机的核心部件&#xff0c;其主要功能是取指令并译码执行。CPU主要包括控制器和运算器两个部件&#xff0c;它对在手机中的所有硬件资源&#xff08;如存储器&#xff0c;输入输出单元&#xff09;进行…

等保案例 1

用户简介 吉林省人力资源和社会保障厅&#xff08;简称“吉林省人社厅”&#xff09;响应《网络安全法》的建设要求&#xff0c;为了向吉林省人民提供更好、更快、更稳定的信息化服务&#xff0c;根据《网络安全法》和等级保护2.0相关标准&#xff0c;落实网络安全与信息化建设…

AD20之PCB设计

一、原理图 1、CTRL鼠标滚轮 图纸的放大缩小 2、修改栅格颜色 3、选择图纸尺寸 4、编译原理图 选中项目右键 5、编译原理图后 出现原理图中所使用的元器件 或错误信息 元器件 编译原理图报错 6、编译原理图库后 选中右侧栏中元器件 可进行添加 或删除库中元器件 7、去…

欧拉OS 使用 CentOS 7 yum repo

一、下载CentOS的repo的yum文件 任何基于CentOS的yum的repo 的url是这样的&#xff1a; 但欧拉OS输出这个变量为&#xff1a;openEuler 20.03 (LTS-SP3) 那明显欧拉想要使用这个yum的url找不到这个版本&#xff0c; 所以直接讲这个变量替换为 7, Centos 7的7 然后执行&…

C进阶(1/7)——数据在内存中的存储

目录 前言&#xff1a; 一.数据类型介绍 类型基本归类&#xff1a; 整型家族&#xff1a; 浮点数家族&#xff1a; 构造类型&#xff1a; ​指针类型&#xff1a; 空类型&#xff1a; 二.整型在内存中的存储 1.原码&#xff0c;反码&#xff0c;补码 2.大小端介绍 3.练…

web基础入门和php语言基础入门 二

web基础入门和php语言基础入门 二 MySQL入门-续MySQL之数据查询操作MySQL其他知识点 php语言基础入门认识PHPPHP的工作流程安装PHP环境认识一个PHP程序PHP基础知识点进入正题 PHP与WEB交互PHP与MySQL交互总结 MySQL入门-续 MySQL之数据查询操作 WHERE 子句&#xff0c;条件限…

面向对象设计与分析40讲(20)消息驱动编程和事件驱动编程模型

文章目录 消息驱动编程事件驱动编程消息驱动和事件驱动的区别 消息驱动编程 消息驱动是一种编程模型&#xff0c;它基于事件和消息的传递来驱动程序的执行流程。在消息驱动的模型中&#xff0c;系统中的各个组件&#xff08;或对象&#xff09;通过发送和接收消息进行通信和协…

如何基于 ACK Serverless 快速部署 AI 推理服务

作者&#xff1a;元毅 随着 AI 浪潮的到来&#xff0c;各种 AI 应用层出不穷&#xff0c;众所周知 AI 应用对 GPU 资源强烈依赖&#xff0c;但 GPU 很昂贵&#xff0c;如何降低 GPU 资源使用成本成为用户首要问题。而 AI 与 Serverless 技术结合&#xff0c;完全可以达到按需使…

mysql中在有数据的表中新增一个主键处理方案

需求&#xff1a;因为业务需要修改表中原来的主键为新增的字段&#xff1b; 处理方案&#xff1a; 1、先将表名修改一下&#xff1b; 2、新增一个一样的表结构&#xff0c;表名与原表名一致&#xff0c;多了一个主键&#xff08;自增&#xff09;的字段&#xff1b; 3、把原…

ArcGIS入门操作手册

一.ArcGIS安装过程 参考本人博客&#xff1a;保姆级Arcgis安装图文安装教程_追忆苔上雪的博客-CSDN博客 二.ArcGIS植被指数计算 (1)使用工具&#xff1a;栅格计算器 打开软件&#xff0c;右侧搜索栅格计算器打开&#xff0c;要是搜索栏不小心叉掉找不到了&#xff0c;可以通…

cmake-ibmtpm1682编译

1、error Ossl library is using different radix 异常解决 RADIX_BITS由 64改成32 --whole-archive CMakeFiles\ibm-tpm-my.dir/objects.a -Wl, --no-whole-archive CMakeFiles\ibm-tpm-my.dir\linklibs.rsp CMake中的 --whole-archive以及–no-whole-archive两者都是编译器…

【数据库】Sql Server可视化工具SSMS条件和SQL窗格以及版本信息

2023年&#xff0c;第34周&#xff0c;第1篇文章。给自己一个目标&#xff0c;然后坚持总会有收货&#xff0c;不信你试试&#xff01; SQL SERVER 官方本身就有数据库可视化管理工具SSMS&#xff0c;所以大部分都会使用SSMS。以前版本是直接捆绑&#xff0c; 安装完成就自带有…

idea入门与maven配置的一些介绍

idea入门与maven配置的一些介绍 1.确保Java和Maven已安装2.创建一个新的Maven项目3.导航到要创建项目的目录配置Maven4.配置项目的pom.xml文件5.配置其他Tomcat和设置jdk6.构建和运行项目 关于idea入门基础配置 步骤1&#xff1a;安装IntelliJ IDEA 首先&#xff0c;从IntelliJ…

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode…) img…

vmalert集成钉钉告警

vmalert通过在alert.rules中配置告警规则实现告警&#xff0c;告警规则语法与Prometheus兼容&#xff0c;依赖Alertmanager与prometheus-webhook-dingtalk实现钉钉告警&#xff0c;以下步骤&#xff1a; 1、构建vmalert 从源代码构建vmalert&#xff1a; git clone https://…