ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ggplot2-标度、坐标轴和图例5

2021-12-15 20:04:17  阅读:168  来源: 互联网

标签:10 aes 20 xlim 标度 图例 限度 ggplot2


限度

一个标度的限度(limits)或值域通常来源于数据的范围。有两个理由去指定限度而不是依赖于数据

  1. 想让限度的范围比数据的范围更小,从而集中于图形的有趣的部分
  2. 想让限度的范围比数据的范围更大,因为想用多个图来相配

很自然地,可以想到位置标度地局限性:它们直接映射到坐标轴上。但是限度也可应用到有图例的标度上,像颜色、尺寸和形状。如果想要颜色于文章中的多个图相配,则限度时特别重要的

可以使用标度的limits参数来修改限度

  1. 对于连续标度,limits参数需要长度为2的数值向量。如果仅仅想设置上限或下限值,可以将另一个值设为NA
  2. 对于离散标度,limits是一个枚举所有可能指的字符串向量
df <- data.frame(x = 1:3, y = 1:3)
base <- ggplot(df, aes(x, y)) + geom_point()
base
base + scale_x_continuous(limits = c(1.5, 2.5))
base + scale_x_continuous(limits = c(0, 4))

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

因为更改限度是一个很常见的工作,ggplot2提供了简化此工作的辅助函数:xlim()、ylim()、lims()。这些函数检查它们的输入,然后创建相应的标度,如下所示
xlim(10, 20): 从10到20的连续标度
ylim(20, 10): 从20到10的反向连续标度
xlim(“a”, “b”, “c”): 离散标度
xlim(as.Date(c(“2008-05-01”, “2008-08-01”))): 从2008年5月1日至2008年8月1日的日期标度

base + xlim(0, 4)
base + xlim(4, 0)
base + lims(x = c(0, 4))

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

坐标轴的范围实际上比指定的要延长一点,这保证了数据不会覆盖坐标轴。设置expand = c(0, 0)可以释放此空间。这和geom_rastre()联合使用的时候很有用

ggplot(faithfuld, aes(waiting, eruptions)) +
	geom_raster(aes(fill = density)) +
	theme(legend.position = "none")

ggplot(faithfuld, aes(waiting, eruptions)) +
	geom_raster(aes(fill = density)) +
	scale_x_continuous(expand = c(0, 0)) +
	scale_y_continuous(expand = c(0, 0)) +
	theme(legend.position = "none")

在这里插入图片描述

在这里插入图片描述

默认情况下,在限度外面的任意数据会被转化为NA,这意味着设置限度与把图像放大到某一区域是不同的。为了得到相同的效果,需要使用coord_cartesian()函数的xlim和ylim参数。这个是纯放大视觉的,并且不影响基础数据。可以用oob(out of bound,“超越边界”)参数来修改标度。默认的是scales::censor(),它用NA代替任意超越限度的值。另一个选项是scales::squish(),它将所有数据压缩到区间内

df <- data.frame(x = 1:5)
p <- ggplot(df, aes(x, 1)) +
	geom_tile(aes(fill = x), color = "white")
p
p + scale_fill_gradient(limits = c(2, 4))
p + scale_fill_gradient(limits = c(2, 4), oob = scales::squish)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

标签:10,aes,20,xlim,标度,图例,限度,ggplot2
来源: https://blog.csdn.net/Arkardia/article/details/121921990

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有