ggplot2中显示坐标轴_R可视化08|ggplot2图层标度图层(scale layer)图例篇

"pythonic生物人"的第106篇分享37243f3965458dfe3028458b17eac30e.png5525fa664651fe6315633f35d9ce303b.png

本文详细介绍ggplot2中图例标度(legends scales),续前篇

  • R可视化07|ggplot2图层-标度图层(scale layer)-颜色盘篇

本文目录

4、图例标度(legends scale)
图例位置设置
修改ggplot2的图例符号
ggplot2的图例顺序|方向等花里胡哨设置

4、图例标度(legends scale)

  • 图例位置设置

图例位置通过theme中的legend.position设置,有参数“right”, “left”, “top”, “bottom”, or “none” (不显示图例)可选。

toy   const = 1, 
  up = 1:4,
  txt = letters[1:4], 
  big = (1:4)*1000,
  log = c(2, 5, 10, 2000)
)

base   geom_point(aes(colour = txt), size = 3) + 
  xlab(NULL) + 
  ylab(NULL)

#legend.position控制图例上下左右位置
p1 "left")
p2 "right") # 默认图例在左边
p3 "bottom")
p4 "none")#不显示图例

#legend.position和legend.justification设置图例占比图形比例控制图例位置
base   geom_point(aes(colour = txt), size = 3)
p5 p6 0, 1), legend.justification = c(0, 1))
p7 0.5, 0.5), legend.justification = c(0.5, 0.5))
p8 1, 0), legend.justification = c(1, 0))
p9 4)

ggsave("scale8.png", p9, width = 8, height = 10)
2badaf682d9f0c2328a587dd4055fa4b.png
  • 修改ggplot2的图例符号

draw_key_*函数指定图例符号,注意右侧图例符号变化。

options(repr.plot.width = 10, repr.plot.height = 12, repr.plot.res = 300)
p1   geom_line()

#draw_key_timeseries指定图例符号为时间序列
p2   geom_line(key_glyph = draw_key_timeseries)


#自定义图例符号为笑脸
library(grid)
library(rlang)
draw_key_smile function(data, params, size) {
  grobTree(
    pointsGrob(0.25, 0.75, size = unit(.25, "npc"), pch = 16),
    pointsGrob(0.75, 0.75, size = unit(.25, "npc"), pch = 16),
    linesGrob(c(0.9, 0.87, 0.78, 0.65, 0.5, 0.35, 0.22, 0.13, 0.1), 
              c(0.5, 0.35, 0.22, 0.13, 0.1, 0.13, 0.22, 0.35, 0.5)),
    gp = gpar(
      col = data$colour %||% "grey20",
      fill = alpha(data$fill %||% "white", data$alpha),
      lwd = (data$size %||% 0.5) * .pt,
      lty = data$linetype %||% 1
    )
  )
}

p3   geom_line(key_glyph = draw_key_smile)
p4 3)

ggsave("scale9.png", p4, width = 10, height = 12)

c05e065cbb99c90ebc8af519fc5b238b.png其它draw_key_*图例符号 cdaf9fca68882e2f61c3637e951d106c.pngc360833c98b8352f238660cdad4bf044.png8f2f4a9848f8928ef8f74977ab7c26e3.png9b66c340757117f5121ad199b0b199dd.png

  • ggplot2的图例顺序|方向等花里胡哨设置

这部分详细介绍图例各种个性化设置,看图找代码即可。

options(repr.plot.width = 5, repr.plot.height = 15, repr.plot.res = 300)
base 
p1 
#ncol byrow设置图例排列顺序
p2 2))
p3 2, byrow = TRUE))

#reverse颠倒图例顺序
p4 TRUE))

#override.aes:覆盖从每个图层派生的一些图形属性设置
base1   geom_point(size = 4, alpha = .2, stroke = 0)

p5 p6 1)))

#axis图例处坐标轴控制
base2   geom_point(alpha = .2) +
  scale_size_binned()

p7 p8 FALSE))

#direction设置图例方向
p9 "vertical"))
p10 "horizontal"))


#show.limits,axis.colour, axis.linewidth和axis.arrow控制图例处axis属性


base3   geom_point(size = 2)

#guide_colourbar() / guide_colorbar()控制colourbar型图例
p13 p14 TRUE))

#设置colourbar高度2cm
p15 2, "cm")))

#guide_coloursteps() / guide_colorsteps()控制刻度显示形式
base4   geom_point() + 
  scale_color_binned()

p16 p17 TRUE))#colourbar首尾显示
p18 FALSE))


p19 8)
ggsave("scale10.png", p19, width = 5, height = 15)
48b6f6daa0b10fe7332cd1031faa3d8b.png

本文结束,更多好文:

  • Python可视化|Matplotlib39-Matplotlib 1.4W+字教程(珍藏版)
  • Python可视化|Matplotlib&Seaborn36(完结篇)
  • python3基础12详解模块和包(库)|构建|使用
  • Perl基础系列合集
  • NGS各种组学建库原理(图解)

633f24fdd543c6d7697d345846f38e32.png633f24fdd543c6d7697d345846f38e32.png有用请“点赞”“在看”“分享”633f24fdd543c6d7697d345846f38e32.png633f24fdd543c6d7697d345846f38e32.png

814439c57ee9b8921f13b661b5ff009d.png

有意见请移步到QQ群629562529反馈,一起进步哈!

83b50e0a36140f8f6d030dfe96abb320.png

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

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

相关文章

C explicit 关键字详解

explicit关键字的作用explicit关键字在写程序时使用的次数较少,但是仔细观察会发现,在C 标准库中的相关类声明中explicit出现的频率是很高的,那么explicit关键字到底有什么作用呢?接下来我就为大家一一解答。explicit为清晰的;明确的之意.顾名思义,关键字explicit可以阻止隐式…

python决策树算法_决策树算法及python实现

决策树算法是机器学习中的经典算法 1.决策树(decision tree) 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。 假设小明去看电影,影响看电影的外部因素有 时间 电…

长见识:你真的知道C语言里extern quot;Cquot; 的作用吗?

经常在C语言的头文件中看到下面的代码:#ifdef __cplusplus extern "C" { #endif// all of your legacy C code here#ifdef __cplusplus } #endif这通常用于C 和C混合编程的时候,为了防止C 的编译器在编译C文件的时候出现错误;众所周…

python自动批量发邮件脚本_Python实现自动发送邮件功能

简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件。Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。 SMTP通讯的基本流程可以概…

C语言中#if,#if defined ,#ifdef,extern的用法描述

1、#if 和#ifdef当asd_eee表达式存在而且,值为ture的时候接续向下执行例如#define TARGET_LITTLE_ENDINA 1 #define TARGET_BIG_ENDINA 0 #ifdef TARGET_LITTLE_ENDINA call little endina function #else call big endina function #endif上面的今天写的代码&…

delphi报列表索引越界怎么处理_图解Elasticsearch索引机制,此篇带你领悟新世界...

前言随着Elastic的上市,ELK不仅在互联网大公司得到长足的发展,而且在各个中小公司都得到非常广泛的应用,甚至连"婚庆网站"都开始使用Elasticsearch了。随之而来的是 Elasticsearch 相关部署、框架、性能优化的文章早已铺天盖地。因…

为什么C语言函数不能返回数组,却可以返回结构体

C语言函数为什么不能返回数组?在C语言程序开发中,我们不可以编写下面这样的代码:char f(void[8]{ char ret;// ...fill... return ret; }int main(int argc, char ** argv) {char obj_a[10];obj_a f(); }不可以编写这样的代码这其实就是不能…

C语言printf()函数具体解释和安全隐患

程序员都知道,也都会使用printf函数,但你知道它也有“安全隐患”吗?下面就来举例我说说:嵌入式专栏1问题描述打印输出的数据并不是理论值,如下图(右边):嵌入式专栏2进一步描述问题请…

java map 如何根据key获得对象_ThreadLocal:Java中的影分身

关于ThreadLocal,你有哪些疑问?ThreadLocal是用来解决什么问题的?如何使用ThreadLocal?ThreadLocal的实现原理是什么?可否举几个实际项目中使用ThreadLocal的案例?基础知识ThreadLocal是线程局部变量&#…

【C语言】你可能对 sizeof() 有点误解。。。

各位,今天还是按照惯例给大家分享一个C语言容易出现的小错误,这也是跟sizeof有关的,问题虽小,却可管中窥豹,话不多说,代码先行:#include int main() { int i; i 8; printf("%d\…

nginx tcp转发_Nginx学习(九):负载均衡服务

介绍对于请求而言,负载均衡能很好的均摊请求,提高服务端吞吐率和整体性能,多个服务节点部署的方式,也提高了容灾和服务高可用。一、负载均衡分类负载均衡分为:GSLB和SLB。1. GDLB全局负载均衡,往往按照国家…

控制台发送get命令_.NET Core使用命令行参数库构建控制台应用程序

前言在我们开发中可能需要设计一次性应用程序,这些实用程序可以利用接近原始源代码的优势,但可以在与主Web应用程序完全独立的安全性上下文中启动。具体在 [管理过程](https://12factor.net/admin-processes)中也已经列出了原因。创建控制台应用打开命令…

C语言函数为什么不能返回数组?

C语言函数为什么不能返回数组?在C语言程序开发中,我们不可以编写下面这样的代码:char f(void)[8] {char ret; // ...fill... return ret; }int main(int argc, char ** argv) {char obj_a[10]; obj_a f(); }不可以编写这样的代码这其实就是不…

mockito_书评:Mockito Essentials

mockitoSujoy Acharya的Mockito Essentials副标题( Packt出版 ,2014年10月)是:“实用指南,可帮助您使用Mockito进行单元测试并开始运行。” Mockito Essentials中的前言和七章涵盖大约190个实质性页面。 前言 在序言中…

C语言中quot;##quot;的独特用法

市面上有很多比较火的编程语言,比如Python、 JAVA、 Go等,你可能觉得C语言很古老、很落后。如果你有这种想法,那可能你只是一个初学的菜鸟。可能绝大部分 C 程序员都不知道"##"隐藏用法,下面就来给大家讲讲。一、##的“…

html a标签去掉下划线_如何用HTML基本元素制作表格

第2天【HTML基本元素】主要内容标题标签段落标签强制换行水平线图片超链接文本格式化标签列表表格学习目标一、标题标题&#xff08;Heading&#xff09;是通过 <h1> - <h6> 标签进行定义的。<h1> 定义最大的标题。 <h6> 定义最小的标题。标题很重要请…

C语言中几个容易踩的“坑”!

今天给大家分享几个C语言中的坑。一、带参数的宏展开顺序#include #define f(a,b) a##b #define g(a) #a #define h(a) g(a)int main(void) {printf("%s\n",h(f(1,2)));printf("%s\n",g(f(1,2)));return 0; }运行结果:12f(1,2)浅析&#xff1a;本题中的#运…

dockerfile cd目录_使用Werf和现有的Dockerfiles改善你的CI/CD体验

迟到总比不到好。该故事讲关于我们因不支持使用常规的Dockerfile来构建镜像导致我们差点犯了一个重大错误。Werf[1]是一个GitOps工具&#xff0c;可以很好地集成到任何CI/CD系统中&#xff0c;并提供完整的应用程序生命周期管理&#xff0c;允许你&#xff1a;构建和推送镜像部…

alxc tool 报错数组超出了界限_代码审计之报错信息泄露与字符串截断

机器在语言编码转换的时候&#xff0c;经常会出现各种各样的异常&#xff0c;这些神奇的字符串就有可能组合成一堆乱码出来&#xff0c;也有可能直接把程序搞崩溃掉&#xff0c;不过总有那么一些字符&#xff0c;可以帮助我们在利用漏洞的时候变得更简单一些&#xff0c;下面我…

C语言,去你的策略模式!

前言 这里先插一点题外话&#xff0c;在C语言中&#xff0c;实现封装、继承、隐藏、多态等等特性&#xff0c;是完全没有问题的。但是在使用过程中&#xff0c;必定是不如自带这些特性的语言方便好用的&#xff0c;比如C \java等。一旦要通过C语言来实现各种设计模式&#xff0…