ggplot2 核密度图和直方图
时间:2022-07-25
本文章向大家介绍ggplot2 核密度图和直方图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
密度图和直方图
sunqi
2020/8/3
Density Plot
Density Plot:也称作核密度图
函数和参数
geom_density()
color, size, linetype: 颜色、大小和线的类型
fill:填充
alpha:透明度
绘图
# 需要的包
library(ggplot2)
theme_set(
theme_classic() +
theme(legend.position = "top")
)
library(patchwork)
library(tidyverse)
rm(list = ls())
get_data <- function(){
set.seed(1234)
df = data.frame(
sex = factor(rep(c("F", "M"), each=200)),
weight = c(rnorm(200, 55), rnorm(200, 58))
)
return(df)
}
# 调用函数
dataset <- get_data()
# get the mean by sex
# me为性别分组的均值
me <- dataset %>%
group_by(sex) %>%
summarise(grp.mean = mean(weight))
# 基础绘图单元
p <- ggplot(dataset, aes(x = weight))
# 简单的绘图
# 添加密度图默认绘图
p1 <- p + geom_density() +
# 添加垂直线
geom_vline(aes(xintercept = mean(weight)), linetype = "dashed")
# y轴为计数
p2 <- p + geom_density(aes(y = stat(count)), fill = "lightgray") +
# 添加垂直均值线
geom_vline(aes(xintercept = mean(weight)), linetype = "dashed")
p1+p2
# 根据颜色区分组
# 改变线的颜色
p3 <- p + geom_density(aes(color = sex)) +
# 这个函数很熟悉吧
scale_color_manual(values = c("#868686FF", "#EFC000FF"))
# 更改线的颜色和填充颜色和垂直线
p4 <- p + geom_density(aes(fill = sex), alpha = 0.4) +
# 添加垂直线,me为性别均值
geom_vline(aes(xintercept = grp.mean, color = sex), data = me, linetype = "dashed") +
# 以下为配色方案
scale_color_manual(values = c("#868686FF", "#EFC000FF"))+
scale_fill_manual(values = c("#868686FF", "#EFC000FF"))
p3+p4
Histogram
直方图为令一种展示分布的方式
主要的函数和参数
geom_histgram
color, size, linetype: 同上 fill: 填充 alpha: 透明度
代码
rm(list=ls())
# 需要的包
library(ggplot2)
theme_set(
theme_classic() +
theme(legend.position = "top")
)
library(patchwork)
library(tidyverse)
get_data <- function(){
set.seed(1234)
df = data.frame(
sex = factor(rep(c("F", "M"), each=200)),
weight = c(rnorm(200, 55), rnorm(200, 58))
)
return(df)
}
# 调用函数
dataset <- get_data()
# 计算均值
junzhi <- dataset %>%
group_by(sex) %>%
summarise(grp.mean = mean(weight))
# 绘图基本单元
# 后续添加图就在此基础上
p <- dataset %>% ggplot( aes(x = weight))
# 简单的直方图
# bins为一个柱子里放的数目
p + geom_histogram(bins = 30, color = "black", fill = "gray") +
# 垂直线
geom_vline(aes(xintercept = mean(weight)),
linetype = "dashed", size = 0.6)
# 用颜色表示分组
# 更改线段的颜色
p1 <- p + geom_histogram(aes(color = sex), fill = "white",
position = "identity") +
# 添加颜色方案
scale_color_manual(values = c("#00AFBB", "#E7B800"))
# 更改填充
p2 <- p + geom_histogram(aes(color = sex, fill = sex),
alpha = 0.4, position = "identity") +
# 添加配色方案
scale_fill_manual(values = c("#00AFBB", "#E7B800")) +
scale_color_manual(values = c("#00AFBB", "#E7B800"))
p1+p2
# 和和密度图组合
# 添加核密度图
p3 <- p + geom_histogram(aes(y = stat(density)),
colour="black", fill="white") +
# 密度图部分
geom_density(alpha = 0.2, fill = "#FF6666")
# 分组
p4 <- p + geom_histogram(aes(y = stat(density), color = sex),
fill = "white",position = "identity")+
# 密度图部分
geom_density(aes(color = sex), size = 1) +
# 配色方案
scale_color_manual(values = c("#868686FF", "#EFC000FF"))
p3+p4
结束语
核密度图和直方图一般在论文中使用的很少,这也就注定是一个数据探索阶段的绘图,所以修的再漂亮也没什么用
love&peace
- JS代码实现浏览器网页标题的动态切换,略微提高网站粘性
- Go-List
- 分享张戈博客自用的php网址在线转换二维码的API源码
- zabbix agentd客户端插件Shell一键自动安装脚本
- SendCloud邮件队列状态和已使用额度的Python监控脚本
- linux/scp命令报“bash: scp: command not found lost connection”错误的解决办法
- bat/cmd批处理连接SqlServer数据库查询脚本
- 一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎
- 解决mstsc无法连接问题:由于没有远程桌面授权服务器可以提供许可证…
- Apache/Nginx伪静态规则匹配http://出现的问题与解决
- 微信文件微起底
- Go语言TCP Socket编程--1
- Go语言TCP Socket编程--2
- 服务器 数据库设计技巧--1
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- InfluxDB和Grafana实现传感器数据的存储和可视化
- 样本相关性分析
- Android 序列化 Serializable与Parcelable
- 《一起学sentinel》二、初探sentinel的Slot
- Redis突然报错,今晚又不能回家了...
- 查询ElasticSearch:用SQL代替DSL
- Java开源框架中的设计模式以及应用场景
- 统一定制API返回格式,我只做了这几件事
- 《一起学sentinel》三、Slot的子类及实现之NodeSelectorSlot和ClusterBuilderSlot
- 《一起学sentinel》四、Slot的子类及实现之LogSlot和StatisticSlot
- 《一起学sentinel》五、Slot的子类及实现之AuthoritySlot和SystemSlot
- Python 之pyaudio使用随笔
- Determining 32 vs 64 bit in C++
- 在线、离线激活鉴权实战
- Spark vs Dask Python生态下的计算引擎