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

文章目录

      • 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.hqwc.cn/news/67211.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UML-A 卷-知识考卷

UML-A 卷-知识考卷 UML有多少种图&#xff0c;请列出每种图的名字&#xff1a; 常用的几种UML图&#xff1a; 类图&#xff08;Class Diagram&#xff09;&#xff1a;类图是描述类、接口、关联关系和继承关系的图形化表示。它展示了系统中各个类之间的静态结构和关系。时序…

项目难点:解决IOS调用起软键盘之后页面样式布局错乱问题

需求背景 &#xff1a; 开发了一个问卷系统重构项目&#xff0c;刚开始开发的为 PC 端&#xff0c;其中最头疼的一点无非就是 IE 浏览器的兼容适配性问题&#xff1b; 再之后项目经理要求开发移动端&#xff0c;简单的说就是写 H5 页面&#xff0c;到时候会内嵌在 App 应用或办…

小研究 - 微服务系统服务依赖发现技术综述(二)

微服务架构得到了广泛的部署与应用, 提升了软件系统开发的效率, 降低了系统更新与维护的成本, 提高了系统的可扩展性. 但微服务变更频繁、异构融合等特点使得微服务故障频发、其故障传播快且影响大, 同时微服务间复杂的调用依赖关系或逻辑依赖关系又使得其故障难以被及时、准确…

【果树农药喷洒机器人】Part6:基于深度相机与分割掩膜的果树冠层体积探测方法

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

如何利用 EMC 模型解决能源服务提供商的瓶颈

01. 什么是合同能源管理&#xff1f; 合同能源管理(EMC-Energy Management Contract) 是一种新型的市场化节能机制,其实质就是以减少的能源费用来支付节能项目全部成本的节能投资方式。&#xff1a;节能服务公司与用能单位以契约形式约定节能项目的节能目标&#xff0c;节能服…

C++ 动态规划经典案例解析之最长公共子序列(LCS)_窥探递归和动态规划的一致性

1. 前言 动态规划处理字符相关案例中&#xff0c;求最长公共子序列以及求最短编辑距离&#xff0c;算是经典中的经典案例。 讲解此类问题的算法在网上一抓应用一大把&#xff0c;即便如此&#xff0c;还是忍不住有写此文的想法。毕竟理解、看懂都不算是真正掌握&#xff0c;唯…

小程序制作教程:从零开始搭建企业小程序

在如今的数字化时代&#xff0c;企业介绍小程序成为了企业展示与推广的重要工具。通过企业介绍小程序&#xff0c;企业可以向用户展示自己的品牌形象、产品服务以及企业文化等内容&#xff0c;进而提高用户对企业的认知度和信任度。本文将介绍如何从零开始搭建一个企业介绍小程…

基于 Nginx All In One 的 Outline Wiki 部署方法

1. Outline 简介 官网&#xff1a;https://www.getoutline.com/ Outline 是一个开源的知识库和团队协作工具&#x1f9e0;&#xff0c;旨在帮助团队共享、组织和协作文档&#x1f4dd;。它提供了一个简洁的界面&#xff0c;使用户能够轻松创建、编辑和查看文档。 以下是 Out…

Redis数据结构——Redis简单动态字符串SDS

定义 众所周知&#xff0c;Redis是由C语言写的。 对于字符串类型的数据存储&#xff0c;Redis并没有直接使用C语言中的字符串。 而是自己构建了一个结构体&#xff0c;叫做“简单动态字符串”&#xff0c;简称SDS&#xff0c;比C语言中的字符串更加灵活。 SDS的结构体是这样的…

【Sklearn】基于最中心分类器算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于最中心分类器算法的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 最近中心分类器&#xff08;Nearest Centroid Classifier&#xff09;也被称为近似最近邻…

遍历集合List的五种方法以及如何在遍历集合过程中安全移除元素

一、遍历集合List的五种方法 测试数据 List<String> list new ArrayList<>(); list.add("A");list.add("B");list.add("C");1. 普通for循环 普通for循环&#xff0c;通过索引遍历 for (int i 0; i < list.size(); i) {Syst…

Java【数据结构】二分查找

&#x1f31e; 题目&#xff1a; &#x1f30f;在有序数组A中&#xff0c;查找目标值target &#x1f30f;如果找到返回索引 &#x1f30f;如果找不到返回-1 算法描述解释前提给定一个内含n个元素的有序数组A&#xff0c;满足A0<A1<A2<<An-1,一个待查值target1设…