java金字塔的流程图,R中的金字塔图

Plotrix可能更容易,但可以反汇编ggplot图表,并将它们排列为金字塔图 . 使用@ eipi10的数据(谢谢),并调整drawing-pyramid-plot-using-r-and-ggplot2中的代码,我为"males","females"和"country"标签绘制了单独的图 . 此外,我从其中一个地块中获取了一个传奇 . 诀窍是让左侧图表的刻度线出现在图表的右侧 - 我改编了mirroring-axis-ticks-in-ggplot2的代码 . 四个位("female"图,国家标签,"male plot"和图例)使用gtable函数放在一起 .

Minor edit: Updating to ggplot2 2.2.1

# Packages

library(plyr)

library(ggplot2)

library(scales)

library(gtable)

library(stringr)

library(grid)

# Data

mov

41.5,31.3,60.7,50.4)

fov

12.3,10,0.8)

fob

25.5,25.3,31.7,28.4)

mob

12.3,10,0.8)

labs

"iceland","portugal","austria","switzerland","australia",

"new zealand","dubai","south africa",

"finland","italy","morocco")

df = data.frame(labs=rep(labs,4), values=c(mov, mob, fov, fob),

sex=rep(c("Male", "Female"), each=2*length(fov)),

bmi = rep(rep(c("Overweight", "Obese"), each=length(fov)),2))

# Order countries by overall percent overweight/obese

labs.order = ddply(df, .(labs), summarise, sum=sum(values))

labs.order = labs.order$labs[order(labs.order$sum)]

df$labs = factor(df$labs, levels=labs.order)

# Common theme

theme = theme(panel.grid.minor = element_blank(),

panel.grid.major = element_blank(),

axis.text.y = element_blank(),

axis.title.y = element_blank(),

plot.title = element_text(size = 10, hjust = 0.5))

#### 1. "male" plot - to appear on the right

ggM

geom_bar(aes(y = values/100, fill = bmi), stat = "identity") +

scale_y_continuous('', labels = percent, limits = c(0, 1), expand = c(0,0)) +

labs(x = NULL) +

ggtitle("Male") +

coord_flip() + theme +

theme(plot.margin= unit(c(1, 0, 0, 0), "lines"))

# get ggplot grob

gtM

#### 4. Get the legend

leg = gtM$grobs[[which(gtM$layout$name == "guide-box")]]

#### 1. back to "male" plot - to appear on the right

# remove legend

legPos = gtM$layout$l[grepl("guide", gtM$layout$name)] # legend's position

gtM = gtM[, -c(legPos-1,legPos)]

#### 2. "female" plot - to appear on the left -

# reverse the 'Percent' axis using trans = "reverse"

ggF

geom_bar(aes(y = values/100, fill = bmi), stat = "identity") +

scale_y_continuous('', labels = percent, trans = 'reverse',

limits = c(1, 0), expand = c(0,0)) +

labs(x = NULL) +

ggtitle("Female") +

coord_flip() + theme +

theme(plot.margin= unit(c(1, 0, 0, 1), "lines"))

# get ggplot grob

gtF

# remove legend

gtF = gtF[, -c(legPos-1,legPos)]

## Swap the tick marks to the right side of the plot panel

# Get the row number of the left axis in the layout

rn

# Extract the axis (tick marks and axis text)

axis.grob

axisl

# axisl # Note: two grobs - text and tick marks

# Get the tick marks - NOTE: tick marks are second

yaxis = axisl$grobs[[2]]

yaxis$x = yaxis$x - unit(1, "npc") + unit(2.75, "pt") # Reverse them

# Add them to the right side of the panel

# Add a column to the gtable

panelPos = gtF$layout[grepl("panel", gtF$layout$name), c('t','l')]

gtF

# Add the grob

gtF

# Remove original left axis

gtF = gtF[, -c(2,3)]

#### 3. country labels - create a plot using geom_text - to appear down the middle

fontsize = 3

ggC

geom_bar(stat = "identity", aes(y = 0)) +

geom_text(aes(y = 0, label = labs), size = fontsize) +

ggtitle("Country") +

coord_flip() + theme_bw() + theme +

theme(panel.border = element_rect(colour = NA))

# get ggplot grob

gtC

# Get the title

Title = gtC$grobs[[which(gtC$layout$name == "title")]]

# Get the plot panel

gtC = gtC$grobs[[which(gtC$layout$name == "panel")]]

#### Arrange the components

## First, combine "female" and "male" plots

gt = cbind(gtF, gtM, size = "first")

## Second, add the labels (gtC) down the middle

# add column to gtable

maxlab = labs[which(str_length(labs) == max(str_length(labs)))]

gt = gtable_add_cols(gt, sum(unit(1, "grobwidth", textGrob(maxlab, gp = gpar(fontsize = fontsize*72.27/25.4))), unit(5, "mm")),

pos = length(gtF$widths))

# add the grob

gt = gtable_add_grob(gt, gtC, t = panelPos$t, l = length(gtF$widths) + 1)

# add the title; ie the label 'country'

titlePos = gtF$layout$l[which(gtF$layout$name == "title")]

gt = gtable_add_grob(gt, Title, t = titlePos, l = length(gtF$widths) + 1)

## Third, add the legend to the right

gt = gtable_add_cols(gt, sum(leg$width), -1)

gt = gtable_add_grob(gt, leg, t = panelPos$t, l = length(gt$widths))

# draw the plot

grid.newpage()

grid.draw(gt)

ac8e33c5-19f2-4f14-9b5c-762a67fd42e3.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM(IMX6U)裸机按键输入实验(BSP+SDK、GPIO输入与输出、按键消抖)

参考:Linux之ARM(IMX6U)裸机按键输入实验(GPIO的输出与输入) 作者:一只青木呀 发布时间: 2020-08-17 21:43:37 网址:https://blog.csdn.net/weixin_45309916/article/details/108057…

php 提取正文算法,PHP生成文章摘要算法_栈

之前网上复制了一个摘要算法,一直使用正常。最近写的一篇前500字里含有超链接,就导致摘要生成有误,从而影响了前端样式。所以后面打算自己写,想起大学编译原理匹配表达式的大致思想,就决定采用栈的思想试试。实现目标&…

设计模式 之 《组合模式》

GOOD&#xff1a;整体和部分可以被一致对待&#xff08;如WORD中复制一个文字、一段文字、一篇文章都是一样的操作&#xff09; #ifndef __COMPOSITE_MODEL__ #define __COMPOSITE_MODEL__ #include <iostream> #include <string> #include <vector> using n…

ARM(IMX6U)裸机主频和时钟

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机主频和时钟配置 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-28 10:39:17 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/108237599 目录1、I.MX6U 时钟系统详解系统时钟…

关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现

灰色系统理论由我国著名学者邓聚龙教授于1982提出。灰色关联分析是灰色系统理论的一个分支&#xff0c;应用灰色关联分析方法对受多种因素影响的事物和现象从整体观念出发进行综合评价是一个被广为接受的方法。一、灰色关联分析法的建模过程灰色关联分析法的基本思想是根据各比…

C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

参考&#xff1a;C语言五大排序&#xff08;桶排序&#xff0c;冒泡排序&#xff0c;选择排序&#xff0c;插入排序&#xff0c;快速排序&#xff09;动态演示 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-09-09 20:18:43 网址&#xff1a;https://blog.csdn.net/we…

FIFO分枝_限界算法

问题&#xff1a; 检索4-皇后问题的状态空间树如下图的基本过程。&#xff08;4-皇后问题解空间的树结构&#xff0c;结点按深度优先检索编号&#xff09; 如果按序扩展这些结点&#xff0c;则下一个E-结点就是结点2。扩展结点2后生成结点3&#xff0c;8和13。利用限界函数(同行…

智能家居APP使用指南

参考&#xff1a;智能家居APP使用指南 作者&#xff1a;图触靓 发布时间&#xff1a; 2021-04-14 14:11:40 网址&#xff1a;https://blog.csdn.net/bhbhhyg/article/details/115694774 目录一、如何修改IP&#xff0c;端口号&#xff0c;以及发送的指令二、如何增加或者删除一…

python zlib字符串压缩

2019独角兽企业重金招聘Python工程师标准>>> 在做网络程序时,可以对字符串进行压缩来节省带宽 项目中用到 {"compress": <压缩标记>, "result":[[设备类型.设备ID, 设备名称, 单位ID, 设备功能], ...]} 只做了简单的压缩解压缩,也没crc3…

linux做一个客户端与WemosD1作为服务器的无线通信(局域网通信)

参考&#xff1a;linux做一个客户端与WemosD1作为服务器的无线通信&#xff08;局域网通信&#xff09; 作者&#xff1a;枕上 发布时间&#xff1a;2021-07-19 23:33:44 网址&#xff1a;https://blog.csdn.net/jinchi_boke/article/details/118916896?utm_sourceapp&app…

C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

下载地址&#xff1a;点我 C语言仍然是计算机领域的通用语言之一&#xff0c;但现在的C语言已经和当初的时候大不相同了。本书主要的一个目的就是通过一种“现代方法”来介绍C语言&#xff0c;书中强调标准C&#xff0c;强调软件工程&#xff0c;不再强调“手工优化”。这一版中…

wemosD1_WIFI模块 与 arduino

参考&#xff1a;wemosD1_WIFI模块 与 arduino 作者&#xff1a;枕上 发布时间&#xff1a;2021-07-19 21:49:55 网址&#xff1a;https://blog.csdn.net/jinchi_boke/article/details/118915142 目录作为设备接入wifi&#xff08;STA模式&#xff09;架设Wemos为ftp服务器ardu…

本机在合成图片经常提示内存不足

转载于:https://www.cnblogs.com/niyl/p/9988614.html

tp5 php7 报500,记一次TP单元测试报500错误的问题

记一次TP单元测试报500错误的问题一直听说好的单元测试能提高代码质量&#xff0c;昨天终于在下定决心弄懂单元测试&#xff0c;但第一步就把我干趴下了&#xff0c;我的问题在下面开始都没有什么问题&#xff0c;tp5单元测试的手册就那一点&#xff0c;通过看云上一位仁兄写的…

H3C配置

H3C交换机配置 1.查看设备版本,确定是否需要升级 <H3C>dis version 2.vlan及接口配置 注&#xff1a;正式配置前可以查看下现有的VLAN。命令如下 <H3C>dis vlan <H3C>sys                          //进入系统视图模式 [H3C]vlan …

创建自己的共用js库

直至昨晚为止&#xff0c;学习了一个多月的MVC与jQuery&#xff0c;从所做的练习中&#xff0c;发觉jQuery的代码也有跟C#语言一样可以重构&#xff0c;多页面有相同使用的方法函数&#xff0c;均可以放置于一个单独立的js文件或是自定义的js库中。在使用时&#xff0c;引用此库…

视频专辑:JAVA语言入门视频教程

为什么80%的码农都做不了架构师&#xff1f;>>> 专辑&#xff1a;JAVA语言入门视频教程 简介:该视频专辑是java的入门教程&#xff0c;适合初学者学习java&#xff0c;讲的也非常容易懂&#xff0c;希望能给想学习java的朋友一些帮助。 1 JAVASE 01 简介 2013-10…

视频专辑:Servlet视频教程

为什么80%的码农都做不了架构师&#xff1f;>>> 专辑&#xff1a;Servlet视频教程 简介:郭宏志 Servlet视频教程 1 郭宏志 Servlet 01 WEB工程结构 2013-10-26 00:32 | 播放(9) | 评论(0) | 时长:28:39 2 郭宏志 Servlet 02 Servlet简介 2013-10-26 00:31 …

基于wemos D1的无线遥控灯(433m无线模块)

参考&#xff1a;基于wemos D1的无线遥控灯(433m无线模块) 作者&#xff1a;一只小阿大:) 发布时间&#xff1a; 2021-04-16 09:25:53 网址&#xff1a;https://blog.csdn.net/qq_44610809/article/details/115747714 项目软硬件平台及开发环境 1.硬件平台 开发板&#xff1a…

Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

一&#xff0c;Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说&#xff0c;软件的漏洞都和版本有关&#xff0c;这个很像汽车的缺陷&#xff0c;同一批次的要有问题就都有问题&#xff0c;别的批次可能就都是好的。因此&#xff0c;我们应尽量隐藏或消除Web服…