可视化第一期:在R平台使用ggplot2

  • 欢迎查询ggplot2使用指南
    • 什么是ggplot2?
    • 基本结构
      • 图形类别geom_function
      • 坐标系coord_function
      • 分面facet_function
      • 标度函数scale_function
    • 各类图形作法
      • 柱状图
    • 总结

欢迎查询ggplot2使用指南

你好! 这篇文章大致会讲一些ggplot2的大致用法,包含了各类图形,如折线图、柱状图、箱型图等等的画法。其中会包含一些代码知识,比如形状、颜色和与数据对应的解释。内容会处于不断完善的过程中,欢迎各位提出建议!

什么是ggplot2?

ggplot2是基于R语言平台的可视化图像处理包,对于绝大多数的可视化实现没有问题。如果对于R语言还不了解的同学,可以把它理解成嫁接在R平台上的可视化处理器,类似于Tableau的存在。

  1. 如何安装
    在R Studio平台输入指令:install.packages("ggplot2")
    或直接点击上方 Tools- Install Packages 搜索 ggplot2进行安装
  2. 如何使用
    R Studio平台输入指令:library(ggplot2)
  3. 相关网站

基本结构

ggplot2的运用非常简单,公式结构分为两部分:必须结构和非必须结构。
必须结构为构建可视化图形的必要语句,缺少这些语句将无法生成图片;非必须结构为一些可视化形式的修饰,如字体大小,图形形状和颜色等。若无非必需结构,可视化图片将以默认方式呈现。以下为基本结构格式:

ggplot (data = <DATA> ) +
<GEOM_FUNCTION> (mapping = aes( <MAPPINGS> ), stat = <STAT> , position = <POSITION> )
#此为必须结构+ <COORDINATE_FUNCTION>
+ <FACET_FUNCTION>
+ <SCALE_FUNCTION>
+ <THEME_FUNCTION>
#此为非必须结构

图形类别geom_function

ggplot2可绘制的图形类别丰富,大致可以罗列为以下几类:
geom_abline 线形图
geom_bar 柱状图
geom_area 面积图(即连续的条形图)
geom_bin2d 二维封箱的热图
geom_blank 空白图
geom_boxplot 箱线图
geom_contour 等高线图
geom_crossbar crossbar图(类似于箱线图,但没有触须和极值点)
geom_density 密度图
geom_density2d 二维密度图
geom_errorbar 误差线(通常添加到其他图形上,比如柱状图、点图、线图等)
geom_errorbarh 水平误差线
geom_freqpoly 频率多边形(类似于直方图)
geom_hex 六边形图(通常用于六边形封箱)
geom_histogram 直方图
geom_hline 水平线
geom_jitter 点、自动添加了扰动
geom_line 线
geom_linerange 区间,用竖直线来表示
geom_path 几何路径,由一组点按顺序连接
geom_point
geom_pointrange 一条垂直线,线的中间有一个点(与Crossbar图和箱线图相关,可以用来表示线的范围)
geom_polygon 多边形
geom_quantile 一组分位数线(来自分位数回归)
geom_rect 二维的长方形
geom_ribbon 彩虹图(在连续的x值上表示y的范围,例如Tufte著名的拿破仑远征图)
geom_rug 触须
geom_segment 线段
geom_smooth 平滑的条件均值
geom_step 阶梯图
geom_text 文本
geom_tile 瓦片(即一个个的小长方形或多边形)
geom_vline 竖直线

图形属性映射
mapping 一系列图形属性的映射 aes()

统计变换函数
stat_abline 添加线条,用斜率和截距表示
stat_bin 分割数据,然后绘制直方图
stat_bin2d 二维密度图,用矩阵表示
stat_binhex 二维密度图,用六边形表示
stat_boxplot 绘制带触须的箱线图
stat_contour 绘制三维数据的等高线图
stat_density 绘制密度图
stat_density2d 绘制二维密度图
stat_function 添加函数曲线
stat_hline 添加水平线
stat_identity 绘制原始数据,不进行统计变换
stat_qq 绘制Q-Q图
stat_quantile 连续的分位线
stat_smooth 添加平滑曲线
stat_spoke 绘制有方向的数据点(由x和y指定位置,angle指定角度)
stat_sum 绘制不重复的取值之和(通常用在三点图上)
stat_summary 绘制汇总数据
stat_unique 绘制不同的数值,去掉重复的数值
stat_vline 绘制竖直线

定位函数
position_dodge 并列
position_fill 填充
position_identity 不对位置进行处理
position_jitter 扰动处理
position_stack 堆叠处理

坐标系coord_function

坐标函数 描述
coord_cartesian 笛卡儿坐标
coord_equal 等尺度坐标(斜率为1)
coord_flip 翻转笛卡儿坐标
coord_map 地图投影
coord_polar 极坐标投影
coord_trans 变换笛卡儿坐标

分面facet_function

分面函数 描述
facet_grid 将分面放置在二维网格中
facet_wrap 将一维的分面按二维排列

标度函数scale_function

scale_alpha alpha通道值(灰度)
scale_brewer 调色板,来自colorbrewer.org网站展示的颜色标度
scale_continuous 连续标度
scale_data 日期
scale_datetime 日期和时间
scale_discrete 离散值
scale_gradient 两种颜色构建的渐变色
scale_gradient2 3中颜色构建的渐变色
scale_gradientn n种颜色构建的渐变色
scale_grey 灰度颜色
scale_hue 均匀色调
scale_identity 直接使用指定的取值,不进行标度转换
scale_linetype 用线条模式来展示不同
scale_manual 手动指定离散标度
scale_shape 用不同的形状来展示不同的数值
scale_size 用不同大小的对象来展示不同的数值

各类图形作法

柱状图

柱状图分为两种:
简单柱状图:两类参数,简单统计某类参数的数量
带第三类参数的柱状图:三类参数,统计某类参数数量的同时在图上标明这类参数所属的类别;这类柱状图主要的呈现形式有填充式、堆积式和并列式。

以下给出两种例子
数据集:COVID-19 Activity.csv
下载链接:https://data.world/covid-19-data-resource-hub/covid-19-case-counts
R代码
简单柱状图

library(ggplot2)
setwd("Desktop/doc/ggplot2")data <- read.csv("COVID-19 Activity.csv")
data$Month <- substring(data$REPORT_DATE, 1, 1)
View(data)png(file = "positive_cases.png")
ggplot(data = data, aes(x = PROVINCE_STATE_NAME, y = sum(PEOPLE_POSITIVE_CASES_COUNT))) +
geom_bar(stat = "identity") +
labs(x = "Province", y = "Positive Cases", title = "COVID-19 Positive Cases by Province") +
theme(axis.title = element_text(size = 8), axis.text = element_text(angle = 45, size = 5, color = 'grey'))
dev.off()

带第三类参数的柱状图

library(ggplot2)
setwd("Desktop/doc/ggplot2")data <- read.csv("COVID-19 Activity.csv")
data$Month <- substring(data$REPORT_DATE, 1, 1)
View(data)pdf(file = "positive_cases_with_month.pdf")
ggplot(data = data, aes(x = PROVINCE_STATE_NAME, y = sum(PEOPLE_POSITIVE_CASES_COUNT), fill = Month)) +geom_bar(stat = "identity", position = "stack") +labs(x = "Province", y = "Positive Cases", title = "COVID-19 Positive Cases by Province") + theme(axis.title = element_text(size = 8), axis.text = element_text(angle = 45, size = 5, color = 'grey'), panel.background = element_blank(), axis.line = element_line(colour = "grey"))
dev.off()


可以明显看出各州COVID-19的的病情况,并且从图中能反映出3-6月为病毒爆发高期。

png(file = "positive_cases_with_month1.png")
ggplot(data = data, aes(x = PROVINCE_STATE_NAME, y = sum(PEOPLE_POSITIVE_CASES_COUNT), fill = Month)) +geom_bar(stat = "identity", position = "fill") + labs(x = "Province", y = "Positive Cases", title = "COVID-19 Positive Cases by Province") + theme(axis.title = element_text(size = 8), axis.text = element_text(angle = 45, size = 5, color = 'grey'), panel.background = element_blank(), axis.line = element_line(colour = "grey"))
dev.off()

还有一种柱状图做法可以把堆叠式改为并排式,对于此数据集并排式并不是科学的画法,感兴趣的同学可以把position一栏改成“dodge”尝试画出并排式柱状图。

总结

本期主要描述了基于R的ggplot2的代码指南,以及柱状图的画法。后面几期会继续为大家作出折线图箱型图等常用图的例子,以及图形大小、颜色的应用。欢迎大家提出自己的意见!

基于R的ggplot2使用指南整理(一)——柱状图画法(含代码)相关推荐

  1. R语言ggplot2可视化创建堆叠的柱状图(stacked barplot)并且每个堆叠的柱状图都缩放到总和为100%实战:最后所有的堆叠的柱子都一样高、Y轴以百分比的形式来显示

    R语言ggplot2可视化创建堆叠的柱状图(stacked barplot)并且每个堆叠的柱状图都缩放到总和为100%实战:最后所有的堆叠的柱子都一样高.Y轴以百分比的形式来显示 目录

  2. 时间序列分析——基于R 王燕 版本 复习整理

    目录 1.时间序列分析 时间序列的定义: 两种时间序列的分析方法: (1)描述性时序分析 (2)统计时序分析 2.时间序列的预处理 平稳性检验 纯随机性检验(白噪声检验) 3.平稳时间序列分析 方法性 ...

  3. 图像采集数据集整理和扩充方案(含代码)

    数据集概述 对于多类别图片数据集采集,在采集完成之后,采集设备可能是不同的手机或者摄像头,因此获取的最后图片数据集尺寸大小,分辨率可能差异性很大,对之后的模型训练有很大的影响:因此我们需要将数据集中的 ...

  4. 基于Pytorch的MNIST手写数字识别实现(含代码+讲解)

    说明:本人也是一个萌新,也在学习中,有代码里也有不完善的地方.如果有错误/讲解不清的地方请多多指出 本文代码链接: GitHub - Michael-OvO/mnist: mnist_trained_ ...

  5. R语言ggplot2可视化散点图、可视化两个数值变量之间的关系、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注信息

    R语言ggplot2可视化散点图.可视化两个数值变量之间的关系(Scatter plot).使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线.自定义数据点的大小.色彩.添加 ...

  6. R语言ggplot2可视化散点图(scatter plot)、并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram)、使用geom_smooth函数基于lm方法拟合数据点之间

    R语言ggplot2可视化散点图(scatter plot).并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram).使用geom_smooth函数基于lm方法拟合数据点之间 ...

  7. R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线

    R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线.对指定范围的数据拟合曲线 目录

  8. R语言ggplot2可视化散点图、并使用geom_encircle函数自定义多边形圈定可视化图像中的指定区域、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线

    R语言ggplot2可视化散点图.并使用geom_encircle函数自定义多边形圈定可视化图像中的指定区域(Scatterplot With Encircling).使用geom_smooth函数基 ...

  9. R语言ggplot2可视化彩色水平条形图并基于条形长度和数值标签长度、自定义最优化配置标签在条形内部或者条形外部

    R语言ggplot2可视化彩色水平条形图并基于条形长度和数值标签长度.自定义最佳配置标签在条形内部或者条形外部 目录

最新文章

  1. YOLOV5 的小目标检测网络结构优化方法汇总(附代码)
  2. 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题...
  3. springboot去掉git版本控制_关于 Git 提交这些规范,你都遵守了吗?
  4. Excel 使用VBA 使表格的值被修改后填充颜色标注
  5. vue3 创建路由「vue-router 4.x 的使用」
  6. 用vue和node写的简易购物车
  7. Hadoop常用参数整理(HDFS/Yarn/MapReduce/GC)
  8. 01-windows下 Rserve安装
  9. Hololens开发入门篇-郑洪智-专题视频课程
  10. java求最小步数_关于java:查找两点之间的最小步数?
  11. python开发小程序拼团_【微擎微赞模块】砍价宝4.5小程序版+小程序前端+后端+素材包+砍价+抢购+拼团...
  12. 知识点梳理:基本矩阵F、本质矩阵E、单应矩阵H
  13. Java的11个关键术语
  14. java 视频转mp4_java视频转码mov转MP4
  15. 更好的Google Glass:棱镜变长、Intel Atom处理器和外置电池组
  16. Sqlite常用表查询语句
  17. 数量金融学(3):Markowitz均值-方差模型
  18. 用计算机画小鸡,水墨电脑画--丝瓜小鸡图
  19. 人工智能之Python人脸识别技术--face_recognition模块
  20. fitnesse java_Fitnesse测试系列--安装及环境配置

热门文章

  1. 美容院管理系统的完整会员管理流程
  2. 计算机导论——HTML基础
  3. PyTorch定义新的自动求导(Autograd) 函数
  4. 计算机网络基础知识——物理层知识框架
  5. AI 技术人脸识别喜怒哀乐情绪表达
  6. DEAP 情绪数据集介绍
  7. 固定资产系统管理方案,完善固定资产管理的方案
  8. IDEA writing classes …… 卡很久解决办法
  9. 关于百度云推送加厂商进行app离线推送的步骤小记
  10. 产品设计中的交互工具