R语言获得所有Aesthetics(美学映射)参数:使用长表输出、使用宽表输出
R语言获得所有Aesthetics(美学映射)参数:使用长表输出、使用宽表输出
目录
R语言获得所有Aesthetics(美学映射)参数:使用长表输出、使用宽表输出
#ggplot2
#获取所有Geom*函数
R语言获得所有Aesthetics(美学映射)参数
#使用长表输出
#使用宽表输出
#ggplot2
ggplot2是由Hadley Wickham创建的一个十分强大的可视化R包。按照ggplot2的绘图理念,Plot(图)= data(数据集)+ Aesthetics(美学映射)+ Geometry(几何对象):
data: 数据集,主要是data frame;
Aesthetics: 美学映射,比如将变量映射给x,y坐标轴,或者映射给颜色、大小、形状等图形属性;
Geometry: 几何对象,比如柱形图、直方图、散点图、线图、密度图等。
在ggplot2中有两个主要绘图函数:qplot()以及ggplot()。
qplot(): 顾名思义,快速绘图;
ggplot():此函数才是ggplot2的精髓,远比qplot()强大,可以一步步绘制十分复杂的图形。
由ggplot2绘制出来的ggplot图可以作为一个变量,然后由print()显示出来。
#获取所有Geom*函数
library(tidyverse)
env <- asNamespace("ggplot2")
all_Geoms <- ls(envir = env, pattern = "^Geom.+")
all_Geoms <- mget(all_Geoms, env)
R语言获得所有Aesthetics(美学映射)参数
all_aes <- map(all_Geoms, ~.$aesthetics())# change Geom* to geom_*
names(all_aes) <- names(all_aes) %>%substr(5,nchar(.)) %>% tolower() %>% paste0("geom_",.)# remove if geom_* doesn't exist
all_aes[!names(all_aes) %in% ls(envir = env)] <- NULL
head(all_aes, 3)
#> $geom_abline
#> [1] "slope" "intercept" "colour" "size" "linetype" "alpha"
#> [7] "group"
#>
#> $geom_area
#> [1] "x" "y" "colour" "fill" "size" "linetype"
#> [7] "alpha" "group"
#>
#> $geom_bar
#> [1] "x" "y" "colour" "fill" "size" "linetype"
#> [7] "alpha" "group"
#使用长表输出
all_aes_long <- all_aes %>%enframe("fun","aes") %>%unchop(aes)all_aes_long
#> # A tibble: 325 x 2
#> fun aes
#> <chr> <chr>
#> 1 geom_abline slope
#> 2 geom_abline intercept
#> 3 geom_abline colour
#> 4 geom_abline size
#> 5 geom_abline linetype
#> 6 geom_abline alpha
#> 7 geom_abline group
#> 8 geom_area x
#> 9 geom_area y
#> 10 geom_area colour
#> # ... with 315 more rows
#使用宽表输出
all_aes_wide <-all_aes_long%>%mutate(val = 1) %>%spread(aes,val,fill = 0)all_aes_wide
#> # A tibble: 38 x 38
#> fun alpha angle colour family fill fontface geometry group height
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 geom~ 1 0 1 0 0 0 0 1 0
#> 2 geom~ 1 0 1 0 1 0 0 1 0
#> 3 geom~ 1 0 1 0 1 0 0 1 0
#> 4 geom~ 0 0 0 0 0 0 0 1 0
#> 5 geom~ 1 0 1 0 1 0 0 1 0
#> 6 geom~ 1 0 1 0 1 0 0 1 0
#> 7 geom~ 1 0 1 0 0 0 0 1 0
#> 8 geom~ 1 0 1 0 1 0 0 1 0
#> 9 geom~ 1 0 1 0 0 0 0 1 0
#> 10 geom~ 1 0 1 0 1 0 0 1 0
#> # ... with 28 more rows, and 28 more variables: hjust <dbl>,
#> # intercept <dbl>, label <dbl>, lineheight <dbl>, linetype <dbl>,
#> # lower <dbl>, map_id <dbl>, middle <dbl>, radius <dbl>, shape <dbl>,
#> # size <dbl>, slope <dbl>, stroke <dbl>, subgroup <dbl>, upper <dbl>,
#> # vjust <dbl>, weight <dbl>, width <dbl>, x <dbl>, xend <dbl>,
#> # xintercept <dbl>, xmax <dbl>, xmin <dbl>, y <dbl>, yend <dbl>,
#> # yintercept <dbl>, ymax <dbl>, ymin <dbl>
参考:ggplot2高效实用指南
参考:R
参考:Is there a table or catalog of aesthetics for ggplot2?
R语言获得所有Aesthetics(美学映射)参数:使用长表输出、使用宽表输出相关推荐
- R语言数据框中的stringsAsFactors参数
R语言数据框中的stringsAsFactors参数 数据框基本建立 参数:stringsAsFactors 数据框基本建立 (注:本文章中的Name变量区分大小写) Name <- c(&qu ...
- R语言将dataframe长表转化为宽表实战:使用reshape函数、使用tidyr包的spread函数、使用data.table
R语言将dataframe长表转化为宽表实战:使用reshape函数.使用tidyr包的spread函数.使用data.table 目录
- R语言tidyr包gather()函数实战详解:数据收缩、从宽表到窄表
R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 目录 R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 收缩两列数据
- R语言数据集合并、数据增减、不等长合并
数据选取与简单操作: which 返回一个向量中指定元素的索引 which.max 返回最大元素的索引 which.min 返回最小元素的索引 sample 随机在向量中抽取元素 subset 根据条 ...
- r语言各形状编号_190+张图片!吐血整理!搞定R语言基础绘图全部知识点
转自:生信宝典|Bio_Data,不一样的生信学习平台 原文链接:ggplot2高效实用指南 (可视化脚本.工具.套路.配色) 作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语 ...
- 在r中弄方差分析表_医学统计与R语言: qvalue
微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 (FalseDiscoveryRate(FDR)=Expected(FalsePositive/(FalsePositive+TruePos ...
- 多元有序logistic回归_医学统计与R语言:多分类logistic回归HosmerLemeshow拟合优度检验...
微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 输入1:multinominal logistic regression install.packages("nnet" ...
- r语言平均值显著性检验_8小时整理!t检验原理!R语言实现!一文彻底搞定t检验(上)...
本文中会加一些注解,是对于一些常用混淆概念得解释.主要内容包括t检验适用范围.实际案例以及R语言的实现. 因文章内容过长,所以分为上下两篇 t检验(t test)亦称 t检验,以t分布为基础,是定量资 ...
- 二元置信椭圆r语言_医学统计与R语言:圆形树状图(circular dendrogram)
微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 输入1: "ggraph") 结果1: name 输入2: <- graph_from_data_frame(my ...
最新文章
- ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS
- Windows 下连接mysql工具NavicatForMysql
- java面试题 并发_Java 并发面试题(一)
- 轻量级文本编辑器,Notepad最佳替代品:Notepad++
- 【自适应盲均衡7】分数间隔的复数常模算法(FSE-CMA)
- Linux进阶之路————crond定时任务调度
- Communicator可以多点同时Logon
- 计算机在职研究生网络班,在职研究生网络班是什么意思
- linux取消登陆管理器,自动登录linux(不使用登录管理器)
- 3Dmax2010 的 安装与激活
- 理工科专业精品书系列
- 如何用python做无限弹窗_Python无限弹窗,开机启动,打包为exe程序
- [Matlab科学计算] 有限元法求二阶常微分方程
- java基于springboot+vue的学生宿舍报修管理系统(源码+数据库+Lw文档)
- 如何批量修改文件名称
- Bootstrap注册页面模板
- Error: [vuex] do not mutate vuex store state outside mutation handlers.报错的解决方法
- Appium从环境搭建到测试脚本编写(四)
- Geany无法识别中文怎么办
- R语言27-Prosper 贷款数据分析3