作者:Li_Yuhui
四川大学研究生在读

本文是ggplot2_可视化_速成的第2节
第3节:scale_xxx()标度调整
第4节:facet_xxx()分面系统
第5节:Guides图例与增加坐标轴
第6节:themes主题系统


文章目录

    • 作者:Li_Yuhui 四川大学研究生在读
    • @[TOC]
  • `coor_xxx()`坐标系变换
    • `coord_cartesian()`笛卡尔坐标系
    • `coord_fixed()`修改纵横比坐标系
    • `coord_flip()`翻转坐标系
    • `coord_polar()`极坐标投影
      • 风玫瑰图(一种常见的极坐标图形)
      • 雷达图
    • `coord_trans()`变换笛卡尔坐标
    • `coord_map()`球面投影坐标系
  • [`scale_xxx()`标度调整](https://blog.csdn.net/weixin_43528109/article/details/83859213)
  • [`facet_xxx()`分面系统](https://blog.csdn.net/weixin_43528109/article/details/83859327)
  • [Guides图例与增加坐标轴](https://blog.csdn.net/weixin_43528109/article/details/83859566)
  • [themes主题系统](https://blog.csdn.net/weixin_43528109/article/details/83859657)

coor_xxx()坐标系变换

ggplot2默认为cartesian笛卡尔坐标系,其它坐标系都是通过笛卡尔坐标系画图,然后变换过来的,坐标函数如下:

坐标变换函数 描述
coord_cartesian() 笛卡尔坐标系
coord_fixed() 固定纵横比笛卡尔坐标系
coord_flip() 翻转坐标系
coord_polar() 极坐标投影坐标系
coord_map(), coord_quickmap() 地图投影(球面投影)
coord_trans() 变比例笛卡尔坐标系

coord_cartesian()笛卡尔坐标系

注: 默认为笛卡尔坐标系,以下参数几乎用不上,可略过
coord_cartesian(xlim = NULL, ylim = NULL, expand = TRUE, default = FALSE, clip = "on")
参数解释:

  • xlim, ylim 表示设定x轴和y轴的绘图范围,如果同时设定clip="off"则表示将不绘制在范围外的数据点,通常不进行设置,
    而是后期从标度中更改显示范围
  • expand 表示是否将扩展xlim和ylim,默认扩展以绘制可能出现在绘图范围以外的数据
  • default 表示是否更改默认坐标系,默认FALSE不更改,TRUE则会变成另一个坐标系

coord_fixed()修改纵横比坐标系

coord_cartesian()为纵横比没有固定的坐标系,表示纵轴和横轴的相对单位长度没有固定,
增加数据,则原图形的比例会变,背景都是正方形格子
coord_fixed()坐标系纵横比可以设置固定,纵横比可以用参数ratio自定义,背景为矩形格子,
固定纵横比后,无论什么图形,其比例都是一样的,常用于横轴,纵轴都是数字的情况
语法:
coord_fixed(ratio = 1, xlim = NULL, ylim = NULL, expand = TRUE, clip = "on")
参数ratio表示指定纵横比,默认为1表示固定纵横比为1, 纵横比越大,则同样尺寸,其纵轴视觉长度越长

library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()p + coord_fixed(ratio = 1) # 固定纵横比为1
p + coord_fixed(ratio = 5) # 固定纵横比为5,变高变窄
p + coord_fixed(ratio = 1/5) # 纵横比小于1,变矮变宽
p + coord_fixed(xlim = c(15, 30)) # 默认纵横比为1,设定x轴显示范围为15到30



coord_flip()翻转坐标系

翻转坐标系指翻转笛卡尔坐标的横轴和纵轴位置,翻转后柱形图变成条形图
coord_flip(xlim = NULL, ylim = NULL, expand = TRUE, clip = "on") 内部参数与标准笛卡尔坐标系一样,不用介绍
翻转后横轴为y轴,纵轴为x轴

h <- ggplot(diamonds, aes(carat)) +geom_histogram()
h
h + coord_flip() # 翻转坐标系


coord_polar()极坐标投影

能将笛卡尔坐标,
coord_polar(theta = "x", start = 0, direction = 1, clip = "on")
参数解释:

  • theta 表示要极坐标化的中心轴,即该轴转化为圆周,另一个轴转化为半径
  • direction 表示排列方向,direction=1表示顺时针,direction=-1表示逆时针
  • start 表示起始角度,以距离12点针的弧度衡量,具体位置与direction参数有关,
    若direction为1则在顺时针start角度处,若direction为-1则在逆时针start角度处
    极坐标转化比较耗费计算机资源,最好先用rm(list = ls()); gc()清空内存
rm(list = ls())
gc() # 清空内存
library(ggplot2)pie <- ggplot(mtcars, aes(x = factor(1), fill = factor(cyl))) +geom_bar(width = 1)
pie
pie + coord_polar(theta = "x") # x轴极化, x刻度值都一样,所以变成多层圆环,y轴刻度值对应圆环半径
pie + coord_polar(theta = "y") # y轴极化, y轴刻度值对应扇形弧度,x轴长度对应扇形半径
pie + coord_polar(theta = "y", start = pi/6, direction = 1) # 起始位置为距离12点针方向30度,顺时针排列
pie + coord_polar(theta = "y", start = pi/6, direction = -1) # 逆时针排列,起始位置与上面不一样
pie + coord_polar(theta = "y", start = -pi/6, direction = 1) # 起始位置与上面一样,但排列顺序不一样 







风玫瑰图(一种常见的极坐标图形)

rm(list = ls())
gc() # 清空内存
library(ggplot2)
set.seed(42)
small <- diamonds[sample(nrow(diamonds), 1000), ]ggplot(data=small)+geom_bar(aes(x=clarity, fill=cut))+coord_polar() +scale_fill_brewer(type = "qual", palette = "Set2", direction = -1)


雷达图

ggplot2极坐标转化不能制作雷达图,可以用ggradar包,安装方法devtools::install_github("ricardo-bion/ggradar")
ggradar支持的数据形式与ggplot2有些区别,采用行分类宽数据最好,好在雷达图的数据量都比较小
ggradar智能化程度非常高,导入适合的数据就能出图,后期美化可以慢慢来

rm(list = ls())
gc() # 清空内存
library(ggradar)mydata <- matrix(runif(40,0,1),5,8) # 构造数据集,5行8列的矩阵
rownames(mydata) <- LETTERS[1:5] # 大写字母为矩阵行命名
colnames(mydata) <- c("Apple","Google","Facebook","Amozon","Tencent","Alibaba","Baidu","Twitter") # 矩阵列命名
mynewdata<-data.frame(mydata) # 将矩阵转化为数据框Name <- c("USA","CHN","UK","RUS","JP")
mynewdata <- data.frame(Name,mynewdata) # 增加一列字符串数据
mynewdata
#单序列:
ggradar(mynewdata[2,]) # 以列名为变量,对第2行数据进行绘图,显示各个公司在中国的业务#多序列:
ggradar(mynewdata) # 对所有行同时作图




coord_trans()变换笛卡尔坐标

原始的笛卡尔坐标上,坐标轴上的刻度比例尺是不变的,而coord_trans轴上刻度比例尺是变化的,
这种坐标系应用很少,但不是没用,
可以将曲线变成直线显示,
如果数据点在某个轴方向的密集程度是变化的,这样不便于观察,可以通过改变比例尺来调节,使数据点集中显示,更加方便观察
语法:
coord_trans(x = "identity", y = "identity", limx = NULL, limy = NULL, clip = "on", xtrans, ytrans)
参数解释:

  • x,y 表示指定坐标轴比例尺变换的方式,默认identity不变化
library(ggplot2)ggplot(diamonds, aes(log10(carat), log10(price))) +geom_point() # 正常笛卡尔坐标系# 通过设置坐标轴标度,使坐标轴比例尺渐变
ggplot(diamonds, aes(carat, price)) +geom_point() +scale_x_log10() + # 坐标轴刻度对数变换scale_y_log10() # 采用变换笛卡尔坐标轴,结果与上面一样
ggplot(diamonds, aes(carat, price)) +geom_point() +coord_trans(x = "log10", y = "log10")# 线性拟合
d <- subset(diamonds, carat > 0.5)
ggplot(d, aes(carat, price)) +geom_point() +geom_smooth(method = "lm") +coord_trans(x = "log10", y = "log10") # lm线性拟合结果为直线,但变换坐标轴后变成了曲线ggplot(d, aes(carat, price)) +geom_point() +geom_smooth(method = "lm") +scale_x_log10() +scale_y_log10() # 通过调整标度的方式,仍然为直线,点的位置并没有发生改变df <- data.frame(a = abs(rnorm(26)),letters)
plot <- ggplot(df,aes(a,letters)) + geom_point()plot + coord_trans(x = "log10") # 对x坐标轴比例尺对数运算
plot + coord_trans(x = "sqrt") # 对x轴坐标轴比例尺开方运算





coord_map()球面投影坐标系

地图投影需要特殊的数据源和很多扩展包,会在其它章节单独演示


scale_xxx()标度调整

facet_xxx()分面系统

Guides图例与增加坐标轴

themes主题系统

ggplot2_coor_xxx()坐标系变换相关推荐

  1. QPainter中坐标系变换问题

    一.坐标系简介. Qt中每一个窗口都有一个坐标系,默认的,窗口左上角为坐标原点,然后水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小.原点即为(0,0)点,然后以像素为单位增减. ...

  2. 视觉slam学习--坐标系变换 | 欧式变换+仿射变换+射影变换

    机器人坐标系变换 https://wenku.baidu.com/view/eebf7912866fb84ae45c8dd5.html?sxts=1600217363607&word=%E6% ...

  3. 研究相机和IMU坐标系变换

    刚开始录制的数据时没有考虑相机和IMU之间的坐标变换,但是后来发现跟踪效果不好,去查验imu数据时,发现,我采集保存的imu数据格式没有和euroc数据集中的imu数据保存格式统一,所以需要研究的是在 ...

  4. 汉诺塔问题的核心除了递归还有坐标系变换

    一开始我这么写,虽然感觉有道理,但是不知道f(2)每次调用的时候怎么判定落点 之后才知道原来是把轴像坐标系变换那样子换了

  5. 理解计算机3D图形学中的坐标系变换

    要谈坐标系变换,那么坐标系有哪些呢?依次有:物体坐标系,世界坐标系,相机坐标系,投影坐标系以及屏幕坐标系.我要讨论的就是这些坐标系间的转换.      这些坐标系不是凭空而来,他们都是为了完成计算机3 ...

  6. (七) carla真实世界坐标系与全局俯视地图像素坐标系变换

    (七) carla真实世界坐标系与全局俯视地图像素坐标系变换 问题陈述 下图为 carlacarlacarla 中 Town07Town07Town07 的真实世界. 下图为 carlacarlaca ...

  7. 一、Mahony姿态解算——坐标系变换

    坐标系 在飞行器姿态解算中,通常以地球坐标系(E系)为绝对坐标系,以机体坐标系(B系)为相对坐标系,并通常设初始状态时E系和B系重合. 坐标系变换 我们将空间中某一向量从一个坐标系,通过坐标系变换,映 ...

  8. [图形学] 坐标系变换——从世界坐标系到相机坐标系

    坐标系变换是图形学中最基础的部分,一个物体从建模到显示在屏幕,经历了从物体坐标系到世界坐标系,再从世界坐标系到观察坐标系,最后通过投影到2D平面,再变换到屏幕坐标等一系列过程. 投影矩阵 我们可以很容 ...

  9. (五)carla中世界坐标系与相机坐标系、像素坐标系变换

    (五)carla中世界坐标系与相机坐标系.像素坐标系变换 由于实验需要将 carlacarlacarla 中世界坐标系下的坐标点画到相机采集的前视图上,故需要进行坐标系之间的转换. 转换中遇到的问题 ...

最新文章

  1. Activiti工作流实战-2
  2. ES2017异步函数现已正式可用
  3. 网络分层协议图以及各层的简介
  4. MD5单向,加密算法-java
  5. 2017-2018-1 20179215《Linux内核原理与分析》第二周作业
  6. 会动的图解!GMP模型里为什么要有P?背后的原因让人暖心
  7. 编程语言python入门-手把手教你从零开始用Python语言写爬虫程序
  8. 【编程题目】对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一...
  9. 细说面试│产品经理面试快速上岸
  10. 雨林木风工具箱 3.5
  11. java进行微信公众号开发
  12. SVN和Git的使用
  13. 如何去除word文档中向下的箭头
  14. 使用Github上传本地项目代码
  15. 6 安卓高德地图错误代码_高德开放平台
  16. 程序员机械键盘选购总结:键盘选的好,Bug一定少
  17. 默纳克系统服务器看平衡系数,默纳克不放重物空轿厢做平衡系数方法
  18. Hie with the Pie(Floyd+状压dp)
  19. 卷积神经网络西储大学轴承故障诊断(基于时频变换)
  20. 卡内基沟通与人际关系

热门文章

  1. 联想笔记本无法识别USB(通用串行总线(USB)的控制器问题)
  2. Druid加载(load data)HDFS文件数据
  3. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
  4. [emacs]man mode
  5. three.js入门到实战
  6. 记录FinalShell退格键
  7. Python学习,Day11
  8. JS 获取指定日期的前几天或者几天
  9. Centos7搭建Frps服务端的教程
  10. python画超长图-python实现按长宽比缩放图片