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坐标系转换函数的更多相关文章

  1. R语言与医学统计图形【1】par函数

    张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...

  2. R语言与医学统计图形-【9】过渡函数qplot

    ggplot2绘图系统 基础绘图包向ggplot2过渡--qplot 绘图理念的不同: 基础绘图包是先铺好画布,再在这张画布上作图(常规思维): ggplot2打破常规,采用图层叠加的方法. qplo ...

  3. R语言与医学统计图形-【19】ggplot2坐标轴调节

    ggplot2绘图系统--坐标轴调节 scale函数:图形遥控器.坐标轴标度函数: scale_x_continous scale_y_continous scale_x_discrete scale ...

  4. R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr

    ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...

  5. R语言与医学统计图形【6】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...

  6. R语言与医学统计图形【8】颜色的选取

    R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...

  7. R语言与医学统计图形【5】饼图、条件图

    R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...

  8. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  9. R语言与医学统计图形【3】条形图、误差图

    R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...

随机推荐

  1. BUAA2020软工作业(五)——软件案例分析

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面 ...

  2. linux系统上国际化失败

    文章目录 一.需求: 二.出现的问题 三.代码结构 1.配置文件中的配置 2.java代码中的使用 四.解决方案 一.需求: 最近项目中有这么一个需求,当用户当前的语言环境是 中文时,导出的 exce ...

  3. stm32电机控制之控制两路直流电机

    小车使用的电机是12v供电的直流电机,带编码器反馈,这样就可以采用闭环速度控制,这里电机使用PWM驱动,速度控制框图如下: 由以上框图可知,STM32通过定时器模块输出PWM波来控制两个直流电机的转动 ...

  4. 三、其他主机安装zabbix-agent加入到zabbix

    一.yum (rpm)方式 1,下载安装对应的zabbix-agent的rpm包 rpm -Uvh  https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/ ...

  5. 分布式事务(四)之TCC

    在电商领域等互联网场景下,传统的事务在数据库性能和处理能力上都暴露出了瓶颈.在分布式领域基于CAP理论以及BASE理论,有人就提出了柔性事务的概念.在业内,关于柔性事务,最主要的有以下四种类型:两阶段 ...

  6. JMeter源码导入到Intellij IDEA (八)

    亲测:jmeter源码导入Intellij IDEA,导入,编译,运行! 一.环境:windows10操作系统,jdk1.8,Intellij IDEA 2018.3,jmeter5.0 下载jmet ...

  7. 攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup

    攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup 题目介绍 题目考点 PHP代码审计 git源码泄露 Writeup 进入题目,点击一番,发现可能出现git ...

  8. MYSQL5.7下载安装图文教程

    MYSQL5.7下载安装图文教程 一. MYSQL两种安装包格式 MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.zip格式相当于绿色版,不需要安装,只需解压缩之后就可以使用了,但 ...

  9. Linux基础五:网络配置与管理

    五.网络配置与管理 1.网络知识 2.命令 ifconfig命令  <=>  ip  addr  show 命令--查看本地所有网卡配置信息 ens32:本地以太网网卡,lo:本地回环网卡 ...

  10. 业务领先模型(Business Leadership Model; BLM)

    1.什么是业务领先模型 业务领先模型是指是一个完整的战略规划方法论.这套方法论是IBM在2003年的时候,和美国某商学院一起研发的.后来,这个方法论成为IBM公司全球从公司层面到各个业务部门共同使用的 ...