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. find&正则表达式

    标准的正则表示式格式 常用元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ ...

  2. WEB前端工程师如何做职业规划?

    对于一个WEB前端的职业规划,其实是有各种的答案,没有哪种答案是完全正确的,全凭自己的选择,只要是自己选定了,坚持去认真走,就好.在这里, 我只是 简要说一下自己对于这块儿内容的理解.有一个观点想要分 ...

  3. seata代码控制回滚和临时挂起分布式事物

    seata代码控制回滚和临时挂起分布式事物 一.说明 二.功能实现 1.手动回滚分布式事物 2.临时挂起分布式事物 三.完整代码 四 参考链接 一.说明 此处只是简单的记录一下,使用了 Seata后, ...

  4. 搬运3:welpwnctf题目

    记录一道自己做的ctf题目:welpwn --RCTF-2015 1.老生常谈checksec查看: 可以看到只开了nx保护,下面我们进入ida下面看看. 发现是一个想rbp-400,rsp+0h的地 ...

  5. RocketMQ源码详解 | Producer篇 · 其一:Start,然后 Send 一条消息

    概述 DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name"); ...

  6. 实验 1: SDN拓扑实践

    (图片和文档是自己写的,因为在CSDN也写了,所以会有自己的水印) 一.实验目的 能够使用源码安装Mininet: 能够使用Mininet的可视化工具生成拓扑: 能够使用Mininet的命令行生成特定 ...

  7. Allure快速入门

    1.关于Allure     Allure框架是一个灵活轻量级多语言测试报告工具,它不仅可以以WEB的方式展示简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息.   ...

  8. Codeforces Round #747 (Div. 2)题解

    谢天谢地,还好没掉分,还加了8分,(8分再小也是加啊)前期刚开始有点卡,不过在尽力的调整状态之后,还是顺利的将前面的水题过完了,剩下的E2和F题就过不去了,估计是能力问题,自己还是得认真补题啦. E2 ...

  9. P2774 方格取数问题(最小割)

    P2774 方格取数问题 一看题目便知是网络流,但由于无法建图.... 题目直说禁止那些条件,这导致我们直接建图做不到,既然如此,我们这是就要逆向思维,他禁止那些边,我们就连那些边. 我们将棋盘染色, ...

  10. hdu 1159 Common Subsequence(最长公共子序列,DP)

    题意: 两个字符串,判断最长公共子序列的长度. 思路: 直接看代码,,注意边界处理 代码: char s1[505], s2[505]; int dp[505][505]; int main(){ w ...