R语言与医学统计图形-【23】ggplot2坐标系转换函数
ggplot2绘图系统——坐标系转换函数
包括饼图、环状条图、玫瑰图、戒指图、坐标翻转。
- 笛卡尔坐标系(最常见)。
- ArcGIS地理坐标系(地图)。
- Cartesian坐标系。
- polar极坐标系。
利用ploar坐标系绘图
coord_polar
函数及参数:
coord_polar(theta = 'x', #x/y
start = 0, #0-12,起始点,对应时钟刻度
direction = 1) #1/-1,顺时针/逆时针
1. 饼图
#饼图
a <- ggplot(data = subset(diamonds,color=="E"),aes(factor('E'),
fill=cut))+geom_bar()
b <- ggplot(data = subset(diamonds,color=="E"),aes(factor('E'),
fill=cut))+geom_bar()+
coord_polar()
c <- ggplot(data = subset(diamonds,color=="E"),aes(factor('E'),
fill=cut))+geom_bar()+
coord_polar(theta = 'y')
grid.arrange(a,b,c,ncol=3)
去掉饼图中心的空白,只需将条形图的标准宽度设为1。还需去掉极坐标刻度、标签等多余的颜色。
a=ggplot(data = subset(diamonds,color=="E"),aes(factor('E'),fill=cut))+
geom_bar(width = 1)+ #设标准宽度
coord_polar(theta = 'y')
b=a+theme(axis.text = element_blank(), #去刻度标签
axis.title = element_blank(), #去标题
axis.ticks = element_blank(), #去刻度
panel.background = element_blank(), #去背景
panel.grid = element_blank()) #去网格线
grid.arrange(a,b,ncol=2)
2. 环形条图
示例比较下。
a <- ggplot(diamonds,aes(cut))+
geom_bar(width = 1,fill='deeppink1',color='black')
b <- a+coord_polar(theta = 'y')
grid.arrange(a,b,ncol=2)
细节的修饰。
data=data.frame(group=c("A","B","C","D"),
value=c(33,62,56,67))
ggplot(data,aes(x=group,y=value,fill=group))+
geom_bar(width = 0.85,stat = 'identity')+
coord_polar(theta = 'y')+
labs(x='',y='')+
ylim(c(0,75))+
#添加条柱标签
geom_text(hjust=1,size=3,aes(x=group,y=0,
label=group,color=group))+
theme(legend.position = 'none',
axis.text.y=element_blank(),
axis.ticks = element_blank())
3. 南丁格尔玫瑰图和戒指图
玫瑰图
dsmall <- diamonds[sample(nrow(diamonds),1000),]
ggplot(dsmall,aes(color,fill=cut))+
geom_bar(width = 0.9)+ #使玫瑰图之间留下空隙
scale_fill_brewer(palette = 'Oranges')+
coord_polar(start = 1)+#为更好找到注释的横坐标
theme(axis.title = element_blank(),
panel.background = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank())+
annotate('text',label=levels(dsmall$color),
x=1:7,y=plyr::count(dsmall,vars = 'color')[,2]+2, #后续会讲更方便的位置参数
fontface='bold')
戒指图
#戒指图
dat=data.frame(count=c(10,60,30),category=c('A',"B","C"))
dat$fraction=dat$count/sum(dat$count)
dat=dat[order(dat$fraction),]
dat$ymax=cumsum(dat$fraction)
dat$ymin=c(0,head(dat$ymax,n=-1))
ggplot(dat,aes(fill=category,ymax=ymax,ymin=ymin,
xmax=5,xmin=3))+ #戒指粗细
geom_rect()+
coord_polar(theta = 'y')+
xlim(c(0,5))+ #此范围要包含(xmin,xmax)
theme(panel.grid = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank())+
annotate("text",x=0,y=0,label='Ring plot',
color='forestgreen',fontface='bold')+
annotate("text",x=c(4,4,4),y=c(0.05,0.25,0.7),
label=c('A','C','B'))+ #戒指环每部分添加文字
labs(title = '')+
theme(legend.position = 'none')
坐标轴翻转
coord_flip
函数,x和y轴互换。
a <- ggplot(dsmall,aes(color,price))+
geom_boxplot(fill='darkgreen')+
coord_flip()
b <- ggplot(dsmall,aes(carat))+
geom_histogram(fill='hotpink',color='black')+
coord_flip()+
scale_x_reverse() #将x刻度翻转,仅适用连续型变量
grid.arrange(a,b,ncol=2)
若不翻转x轴,如下所示:
R语言与医学统计图形-【23】ggplot2坐标系转换函数的更多相关文章
- R语言与医学统计图形【1】par函数
张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...
- R语言与医学统计图形-【9】过渡函数qplot
ggplot2绘图系统 基础绘图包向ggplot2过渡--qplot 绘图理念的不同: 基础绘图包是先铺好画布,再在这张画布上作图(常规思维): ggplot2打破常规,采用图层叠加的方法. qplo ...
- R语言与医学统计图形-【19】ggplot2坐标轴调节
ggplot2绘图系统--坐标轴调节 scale函数:图形遥控器.坐标轴标度函数: scale_x_continous scale_y_continous scale_x_discrete scale ...
- R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr
ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...
- R语言与医学统计图形【6】低级绘图函数
R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...
- R语言与医学统计图形【8】颜色的选取
R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...
- R语言与医学统计图形【5】饼图、条件图
R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...
- R语言与医学统计图形【4】直方图、金字塔图
R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...
- R语言与医学统计图形【3】条形图、误差图
R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...
随机推荐
- JVM:Java中的引用
JVM:Java中的引用 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 在原来的时候,我们谈到一个类的实例化 Person p = new Person() 在 ...
- UltraSoft - Alpha - 发布声明
DDL_Killer Alpha版本发布声明 1. Alpha 阶段功能描述与版本实现 功能描述 设计原型 Alpha实现 登陆界面 注册界面 首页 日历视图 事项详情页 新建事项 列表视图 课程视图 ...
- 【二食堂】Alpha - Scrum Meeting 1
Scrum Meeting 1 例会时间:4.10 8:00 - 8:30 进度情况 组员 上周进度 明日任务 李健 1. 在Anaconda3中搭建了python和django的环境issue1. ...
- csp-s 2021
T1 廊桥分配 当一架飞机抵达机场时,可以停靠在航站楼旁的廊桥,也可以停靠在位于机场边缘的远机位. 乘客一般更期待停靠在廊桥,因为这样省去了坐摆渡车前往航站楼的周折. 然而,因为廊桥的数量有限,所以这 ...
- 常用Java API: ArrayList(Vector) 和 LinkedList
摘要: 本文主要介绍ArrayList(Vector)和LinkedList的常用方法, 也就是动态数组和链表. ArrayList ArrayList 类可以实现可增长的对象数组. 构造方法 Arr ...
- sonar-project.propertie分析参数
SonarScanner 是当您的构建系统没有特定扫描仪时使用的扫描仪. 配置您的项目 在你的项目根目录中创建一个名为的配置文件 sonar-project.properties # must be ...
- 2021 CCPC女生赛
newbie,A了五题铜牌收工 比赛时和队友悠哉游哉做题,想着干饭,最后幸好没滚出铜尾. 贴一下比赛过的代码 A题 签到 队友A的,判断正反方向序列是否符合要求 /*** * @Author: _Kr ...
- P2120 [ZJOI2007]仓库建设
P2120 [ZJOI2007]仓库建设 怎么说呢?算是很水的题了吧... 只要不要一开始就把dp想错就行... #include<bits/stdc++.h> #define ll lo ...
- Luogu P1563 [NOIp2016提高组]玩具谜题 | 模拟
题目链接 纯模拟题,没啥好说的,就是要判断地方有点多,一定要注意细节. #include<iostream> #include<cstdio> #include<fstr ...
- 第02课 OpenGL 多边形
你的第一个多边形: 在第一个教程的基础上,我们添加了一个三角形和一个四边形.也许你认为这很简单,但你已经迈出了一大步,要知道任何在OpenGL中绘制的模型都会被分解为这两种简单的图形.读完了这一课,你 ...