r 语言 ggplot上添加平均值_R语言中ggplot2包作数据分布情况下的统计图实例学习(一)
1、小提琴图
小提琴图可以可视化一组或几组数字变量的分布。
问题:您想制作一个小提琴图来比较不同组的密度估计。用gcookbook包与ggplot2包分别绘制。
解决问题:
使用geom_violin()(图1),由于安装包时出问题,我采用直接式下载安装(网站:https://cran.r-project.org/web/packages/gcookbook/index.html),将就升级了一下ggplot2包(运行update.packages(),它将提示您输入每个可以升级的软件包。如果您希望它不要求就升级所有软件包,请使用ask = FALSE;update.packages(ask = FALSE)):
gcookbook作
library(gcookbook) # 加载gcookbook包
# 使用 heightweight数据集
hw_p <- ggplot(heightweight, aes(x = sex, y = heightIn,fill=sex))
hw_p +geom_violin()
默认情况下,小提琴缩放使每一个的总面积是一样的(如果trim = TRUE
,然后将其缩放)。可以使用scale = "count"
与每个组中的观察数量成比例的比例来缩放面积,而不是相等的面积(图2)。在此示例中,女性小提琴比男性少,因此女性小提琴变得比以前更窄:
library(gcookbook) # 加载gcookbook包
# 使用 heightweight数据集
hw_p <- ggplot(heightweight, aes(x = sex, y = heightIn,fill=sex))
# 比例面积与观测数成比例
hw_p +geom_violin(scale = "count")
要更改平滑量,请使用调整参数。预设值为1;使用较大的值进行更平滑,使用较小的值进行较不平滑(图3):
# 更平滑
hw_p +geom_violin(adjust = 2)
# 较平滑
hw_p +geom_violin(adjust = .5)
ggplot2作
library(ggplot2)
# 创建一个数据集
data <- data.frame(name=c( rep("A",500), rep("B",500), rep("B",500), rep("C",20), rep('D', 100) ),value=c( rnorm(500, 10, 5), rnorm(500, 13, 1), rnorm(500, 18, 1), rnorm(20, 25, 4), rnorm(100, 12, 1) )
)
#绘制一个小提琴图
p <- ggplot(data, aes(x=name, y=value, fill=name)) + # fill=name 允许自动为每个组添加一种颜色geom_violin()
p
借助专用功能,构建小提琴图ggplot2
非常简单geom_violin()
。除了显示提供摘要统计信息的箱形图外,还可以使用geom_boxplot()
一个较小width
的框(图5)。
# Libraries
library(ggplot2)
library(dplyr)
library(hrbrthemes)
library(viridis)
# create a dataset
data <- data.frame(name=c( rep("A",500), rep("B",500), rep("B",500), rep("C",20), rep('D', 100) ),value=c( rnorm(500, 10, 5), rnorm(500, 13, 1), rnorm(500, 18, 1), rnorm(20, 25, 4), rnorm(100, 12, 1) )
)# sample size
sample_size = data %>% group_by(name) %>% summarize(num=n())# Plot
data %>%left_join(sample_size) %>%mutate(myaxis = paste0(name, "n", "n=", num)) %>%ggplot( aes(x=myaxis, y=value, fill=name)) +geom_violin(width=1.4) +geom_boxplot(width=0.1, color="grey", alpha=0.2) +scale_fill_viridis(discrete = TRUE) +theme_ipsum() +theme(legend.position="none",plot.title = element_text(size=11)) +ggtitle("A Violin wrapping a boxplot") +xlab("")
ggplot2小提琴具体学习请参考:
第一个:Violin Chart | the R Graph Gallery
第二个:http://www.sthda.com/english/wiki/ggplot2-violin-plot-quick-start-guide-r-software-and-data-visualization
2、密度图
使用R软件和ggplot2软件包创建密度图。使用了函数geom_density()。您也可以使用geom_vline函数为平均值添加一条线。
#数据准备
set.seed(1234)
df <- data.frame(sex=factor(rep(c("F", "M"), each=200)),weight=round(c(rnorm(200, mean=55, sd=5),rnorm(200, mean=65, sd=5))))
head(df)
#绘制基本密度图
library(ggplot2)
# Basic density
p <- ggplot(df, aes(x=weight)) + geom_density()
p
#添加均值中线
ggplot(df, aes(x=weight))+geom_density(linetype="dashed")
按组更改密度图颜色,计算每组的平均值;更改线条颜色,密度图线颜色可以按性别自动控制:
#计算各组均值
library(plyr)
mu <- ddply(df, "sex", summarise, grp.mean=mean(weight))
head(mu)
# sex grp.mean
# 1 F 54.70
# 2 M 65.36
# 按组更改密度图线颜色
ggplot(df, aes(x=weight, color=sex)) +geom_density()
# 添加平均线
p<-ggplot(df, aes(x=weight, color=sex)) +geom_density()+geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),linetype="dashed")
p
也可以使用以下功能手动更改密度绘图线的颜色:
- scale_color_manual():使用自定义颜色
- scale_color_brewer():使用RColorBrewer包中的调色板
- scale_color_grey():使用灰色调色板
# 使用自定义调色板
p+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# 使用调色板
p+scale_color_brewer(palette="Dark2")
# 使用灰色
p + scale_color_grey() + theme_classic()
更改填充颜色
密度图填充颜色可以按性别自动控制:
#按组更改密度图填充颜色(如图5a)
ggplot(df, aes(x=weight, fill=sex)) +geom_density()
#使用半透明填充(图5b)
p<-ggplot(df, aes(x=weight, fill=sex)) +geom_density(alpha=0.4)
p
#添加平均线(图5c)
p+geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),linetype="dashed")
也可以使用以下功能手动更改密度图填充颜色:
- scale_fill_manual():使用自定义颜色
- scale_fill_brewer():使用RColorBrewer包中的调色板
- scale_fill_grey():使用灰色调色板
# 使用自定义调色板(图6a)
p+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# 使用brewer的调色板(图b)
p+scale_fill_brewer(palette="Dark2")
# 使用灰度(图c)
p + scale_fill_grey() + theme_classic()
ggplot2包其他颜色具体看:http://www.sthda.com/english/wiki/ggplot2-colors-how-to-change-colors-automatically-and-manually
更改图例位置
p + theme(legend.position="top")#图例在上
p + theme(legend.position="bottom")#图例在下
p + theme(legend.position="none") # 删除图例
ggplot2包的更多图例请看:ggplot2 legend : Easy steps to change the position and the appearance of a graph legend in R software
组合直方图和密度图
- 直方图以密度而不是y轴上的计数值绘制
- 用透明密度图覆盖
# 带有密度图的直方图(图9-1)
ggplot(df, aes(x=weight)) + geom_histogram(aes(y=..density..), colour="black", fill="white")+geom_density(alpha=.2, fill="#FF6666")
# 按组分颜色(图9-2)
ggplot(df, aes(x=weight, color=sex, fill=sex)) + geom_histogram(aes(y=..density..), alpha=0.5, position="identity")+geom_density(alpha=.2)
其他类形图例可查看:ggplot2 density plot : Quick start guide - R software and data visualization
参考书籍:《GGPlot2 Essentials for Great Data Visualization in R》,仅学习用
r 语言 ggplot上添加平均值_R语言中ggplot2包作数据分布情况下的统计图实例学习(一)相关推荐
- r 语言 ggplot上添加平均值_R语言自定义两种统计量度:平均值和中位数,何时去使用?
原文链接: http://tecdat.cn/?p=11085tecdat.cn 最常用的两种统计量度是平均值和中位数.两种度量均指示分布的中心值,即预期大多数数据点所处的值.但是,在许多应用程序中 ...
- r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...
点击蓝字↑↑↑"微生态",轻松关注不迷路 利用R语言堆叠图,我们可以将一个项目中所有样品的物种组成展示出来.下面介绍如何利用R语言进行物种组成分析和可视化.过程分为以下几步: 1) ...
- r语言ggplot合并图形_R中带有ggplot2的图形
r语言ggplot合并图形 介绍 (Introduction) R is known to be a really powerful programming language when it come ...
- R语言ggplot绘制地图-报错汇总(一)
R语言ggplot绘制地图-报错汇总 报错两例 报错1: 报错2: 报错两例 在用ggplot绘制地图时出现了两个报错,网上搜索了没有相关说明,虽然解决方式很蠢,但是可能对于出现同样报错的人会有帮助, ...
- UA MATH571A QE练习 R语言 非参数回归 上
UA MATH571A QE练习 R语言 非参数回归上 2014年5月第五题 2015年1月第四题 2015年5月第四题 这一篇介绍2014年5月第五题.2015年1月第四题.2015年5月第四题. ...
- r语言变量长度不一致怎么办_R语言实现数据离散化方法总结
前言 在做数据挖掘模型的时候,我们有时会需要把连续型变量转型离散变量,这种转换的过程就是数据离散化,分箱就是离散化常用的一种方法. 数据离散化处理属于数据预处理的一个过程,R语言在数据处理上有天然的优 ...
- R语言为dataframe添加新的数据列(add new columns):使用R原生方法、data.table、dplyr等方案
R语言为dataframe添加新的数据列(add new columns):使用R原生方法.data.table.dplyr等方案 目录 R语言为dataframe
- R语言为dataframe添加新的数据列(横向拼接、Appending columns,Unioning columns):使用R原生方法、data.table、dplyr等方案
R语言为dataframe添加新的数据列(横向拼接.Appending columns,Unioning columns):使用R原生方法.data.table.dplyr等方案 目录 R语言为dat
- R语言为散点图添加凸包(convex hull):数据预处理(创建一个包含每组数据凸包边界的数据集)、ggplot2使用geom_polygon函数为可视化图像添加凸包(convex hull)
R语言为散点图添加凸包(convex hull):数据预处理(创建一个包含每组数据凸包边界的数据集).ggplot2使用geom_polygon函数为可视化图像添加凸包(convex hull) 目录
最新文章
- bezier曲线_Bezier算法
- IO:同步,异步,阻塞,非阻塞
- mysql修改表结构权限_mysql 修改表结构操作
- 241. Different Ways to Add Parentheses
- windows server 2008 系列讲座三部曲--在线讲座预告
- python学习之wxPython
- php 访问url获得返回值,如何在curl php请求中获取数组值作为返回值?
- [leetcode]1306. 跳跃游戏 III
- 2021年华为Java面经,顺利收获Offer
- 如何复制网页上不能复制的文字——三种解决方案
- ksz8863调试总线,
- VUE下载excel文件
- ROBOTSTUDIO学习
- 错误Illegal invocation;使用jquery的ajax上传文件报错Illegal invocation
- U3D学习项目一:2D横版小狐狸闯关游戏(代码部分二)
- 计算机专业抑郁症多,计算机算法能够辅助医生诊断抑郁症?
- 随记 C#读取TXT文件乱码
- U盘装系统:魔方U盘启动制作
- 如何在Docker容器中运行Docker [3种方法]
- androidjni开发!应聘高级Android工程师历程感言,快来收藏!
热门文章
- 联想开机启动项按哪个_win7系统如何修改系统启动项 win7系统修改系统启动项方法【步骤】...
- ORA-28002:密码过期时的处理…………
- Java并发编程-ThreadPool线程池
- mysql按时间月份查询数据
- 实现PHP内部的通知机制,如当一个类的属性发生变化时,另外一个类就可以收到通知...
- [转帖]升级 Ubuntu,解决登录时提示有软件包可以更新的问题
- Nexus 3.X(Maven仓库私服)仓库迁移与备份
- Hibernate入门级实例
- 快速切换目录软件推荐——autojump
- Win7下MATLAB 7.0下载地址+详细安装+运行错误解决