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(美学映射)参数:使用长表输出、使用宽表输出相关推荐

  1. R语言数据框中的stringsAsFactors参数

    R语言数据框中的stringsAsFactors参数 数据框基本建立 参数:stringsAsFactors 数据框基本建立 (注:本文章中的Name变量区分大小写) Name <- c(&qu ...

  2. R语言将dataframe长表转化为宽表实战:使用reshape函数、使用tidyr包的spread函数、使用data.table

    R语言将dataframe长表转化为宽表实战:使用reshape函数.使用tidyr包的spread函数.使用data.table 目录

  3. R语言tidyr包gather()函数实战详解:数据收缩、从宽表到窄表

    R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 目录 R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 收缩两列数据

  4. R语言数据集合并、数据增减、不等长合并

    数据选取与简单操作: which 返回一个向量中指定元素的索引 which.max 返回最大元素的索引 which.min 返回最小元素的索引 sample 随机在向量中抽取元素 subset 根据条 ...

  5. r语言各形状编号_190+张图片!吐血整理!搞定R语言基础绘图全部知识点

    转自:生信宝典|Bio_Data,不一样的生信学习平台 原文链接:ggplot2高效实用指南 (可视化脚本.工具.套路.配色) 作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语 ...

  6. 在r中弄方差分析表_医学统计与R语言: qvalue

    微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 (FalseDiscoveryRate(FDR)=Expected(FalsePositive/(FalsePositive+TruePos ...

  7. 多元有序logistic回归_医学统计与R语言:多分类logistic回归HosmerLemeshow拟合优度检验...

    微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 输入1:multinominal logistic regression install.packages("nnet" ...

  8. r语言平均值显著性检验_8小时整理!t检验原理!R语言实现!一文彻底搞定t检验(上)...

    本文中会加一些注解,是对于一些常用混淆概念得解释.主要内容包括t检验适用范围.实际案例以及R语言的实现. 因文章内容过长,所以分为上下两篇 t检验(t test)亦称 t检验,以t分布为基础,是定量资 ...

  9. 二元置信椭圆r语言_医学统计与R语言:圆形树状图(circular dendrogram)

    微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 输入1: "ggraph") 结果1: name 输入2: <- graph_from_data_frame(my ...

最新文章

  1. ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS
  2. Windows 下连接mysql工具NavicatForMysql
  3. java面试题 并发_Java 并发面试题(一)
  4. 轻量级文本编辑器,Notepad最佳替代品:Notepad++
  5. 【自适应盲均衡7】分数间隔的复数常模算法(FSE-CMA)
  6. Linux进阶之路————crond定时任务调度
  7. Communicator可以多点同时Logon
  8. 计算机在职研究生网络班,在职研究生网络班是什么意思
  9. linux取消登陆管理器,自动登录linux(不使用登录管理器)
  10. 3Dmax2010 的 安装与激活
  11. 理工科专业精品书系列
  12. 如何用python做无限弹窗_Python无限弹窗,开机启动,打包为exe程序
  13. [Matlab科学计算] 有限元法求二阶常微分方程
  14. java基于springboot+vue的学生宿舍报修管理系统(源码+数据库+Lw文档)
  15. 如何批量修改文件名称
  16. Bootstrap注册页面模板
  17. Error: [vuex] do not mutate vuex store state outside mutation handlers.报错的解决方法
  18. Appium从环境搭建到测试脚本编写(四)
  19. Geany无法识别中文怎么办
  20. R语言27-Prosper 贷款数据分析3

热门文章

  1. Linux串口读取与解析
  2. 软件开发环境-集成机制
  3. 爬虫的系统框架组成-资源库
  4. HTML的标签描述6
  5. 江苏省三级偏硬试题样卷
  6. 前端新手学习记录2 -使用vscode编写个人网站首页
  7. 华为鸿蒙智慧屏怎么样,65寸华为智慧屏怎么样?4000元选哪个好?
  8. pandas中的3种基本数据类型介绍
  9. Random在for以及foreach循环中产生相同随机数问题
  10. OpenCV java 图片处理,蒙太奇图片(13)