Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何创建要使用ggplot渲染的绘图列表?

如何创建要使用ggplot渲染的绘图列表?
EN

Stack Overflow用户
提问于 2021-08-03 00:33:39
回答 2查看 51关注 0票数 0

我正在尝试构建一个ggplot图形列表,稍后将绘制该列表。到目前为止,我以Anscombe的四重奏为例,是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(gridExtra)
base <- ggplot() + xlim(4,19)
plots = vector(mode = "list", length = 4)
for(i in 1:4) {
  x <- anscombe[,i]
  y <- anscombe[,i+4]
  p <- geom_point(aes(x,y),colour="blue")
  q <- geom_smooth(aes(x,y),method="lm",colour="red",fullrange=T)
  plots[[i]] <- base+p+q
}
grid.arrange(grobs = plots,ncol=2)

当我遍历循环时,我希望将图p和q的当前值与基本图相加到列表的第i个值中。也就是说,列表元素编号i包含与数据集中第i个x和y列相关的图。

然而,发生的情况是最后一个图只被绘制了四次。我用base R做了一些非常类似的事情,使用了mfrowplotabline,所以我相信我的逻辑是正确的,但我的实现不正确。我怀疑问题出在下面这几行代码上:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plots = vector(mode = "list", length = 4)
plots[[i]] <- base+p+q

如何创建一个ggplot图形列表;从一个空列表开始?

(如果这是一个琐碎而愚蠢的问题,我道歉。我对R和图形语法都是新手。)

EN

回答 2

Stack Overflow用户

发布于 2021-08-03 00:43:07

如果使用lapply()而不是for循环,则代码可以正常工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plots <- lapply(1:4, function(i) { 
  # create plot number i
})

这个问题的原因是ggplot使用了惰性计算。在渲染绘图时,循环已经迭代到i=4,最后一个绘图将显示四次。

完整的工作示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(gridExtra)
base <- ggplot() + xlim(4,19)
plots <- lapply(1:4, function(i) {
  x <- anscombe[,i]
  y <- anscombe[,i+4]
  p <- geom_point(aes(x,y),colour="blue")
  q <- geom_smooth(aes(x,y),method="lm",colour="red",fullrange=T)
  base+p+q
})
grid.arrange(grobs = plots,ncol=2)
票数 1
EN

Stack Overflow用户

发布于 2021-08-03 01:12:37

要强制求值,有一个简单的解决方案,将aes(...)更改为aes_(...),您的代码就可以正常工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(gridExtra)
base <- ggplot() + xlim(4,19)
plots <- lapply(1:4, function(i) {
  x <- anscombe[,i]
  y <- anscombe[,i+4]
  p <- geom_point(aes_(x,y),colour="blue")
  q <- geom_smooth(aes_(x,y),method="lm",colour="red",fullrange=T)
  base+p+q
})
grid.arrange(grobs = plots,ncol=2)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68632779

复制
相关文章
ggplot2绘图
ggplot2 包提供了一个基于全面而连贯的语法的绘图系统。它弥补了 R 中创建图形缺乏一致性的缺点,使得用户可以创建有创新性的、新颖的图形类型。ggplot2 是 R 语言绘图一个重要特性和优势。通过 ggplot2,只需少量的代码,就可以绘制出高质量的图形,满足出版需要。ggplot2 语法简介,逻辑清晰,功能强大,可以快速上手。在 R 语言中自成一派,目前也有越来越多的绘图包基于 ggplot2 进行二次开发,一般都是以“gg”开头,例如 ggpubr,ggtree,ggvis,ggtree,ggstatsplot 等。
生信喵实验柴
2022/10/25
7390
如何在Python里用ggplot2绘图
为了严格实现图形语法,ggplot2提供了一种非常直观和一致的方式来绘制数据。ggplot2的绘图方法不仅确保每个绘图包含特定的基本元素,而且在很大程度上简化了代码的可读性。
AiTechYun
2019/06/15
3.6K0
如何使用Cook创建复杂的密码字典列表
Cook是一款功能强大的字典生成工具,该工具可以通过创建单词的排列和组合以生成复杂的字典和密码。Cook可以使用一系列预定于前缀、后缀、单词和模式来创建复杂的节点、字典和密码。
FB客服
2021/07/02
4K0
Python要如何实现(列表)排序?
排序,是许多编程语言中经常出现的问题。同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现)
全栈程序员站长
2022/09/07
8340
列表渲染与条件渲染
相同的结构是列表渲染的前提,列表等都会有⼏千上万条的数据,它们的共同的特征就是数据的结构相同。
达达前端
2019/11/29
1.6K0
vue列表渲染
Vue.js中最常用的列表渲染方式是使用v-for指令。这个指令可以根据一个数组或对象的数据源,循环渲染出多个元素。在每次循环迭代中,你可以访问当前迭代的元素和索引,并根据需要对它们进行操作。
堕落飞鸟
2023/05/21
7170
R绘图-ggplot2 (2)
#这一小节介绍标尺,在对图形属性进行映射之后,使用标尺可以控制这些属性的显示方式,
生信补给站
2020/08/06
8730
使用 Python 创建使用 for 循环的元组列表
Python 的关键数据结构是列表和元组。元组元素一旦设置,就无法更改。这称为不可变性。但是列表元素可以在初始化后修改。在处理需要组合在一起的数据时,for 循环用于创建元组列表。列表比元组更具适应性,因为它们能够被修改。本教程演示如何使用 for 循环创建元组列表,从而简化重复性任务。
很酷的站长
2023/08/11
3900
使用 Python 创建使用 for 循环的元组列表
R绘图-ggplot2 (3)
#在统计变换一节中,提到如果按切工分组作回归线,显然图会很乱,有了分面功能,我们可以分别作图。
生信补给站
2020/08/06
4900
R绘图-ggplot2(1)
small <- diamonds[sample(nrow(diamonds), 1000), ]
生信补给站
2020/08/06
1.1K0
列表:创建列表
列表是Tcl语言中最重要的一种数据结构。什么是列表?列表是元素的有序集合,各个元素可以包含任何字符串,例如空格,反斜杠,换行符等。列表表现为特定结构的字符串,这意味着可以把它们赋值给一个变量,可以把它们做为参数传给命令,可以把它们嵌套到其他列表中。
Lauren的FPGA
2019/10/30
2.4K0
ggplot2 调整绘图区域大小
熟悉 R 绘图的朋友肯定知道,在普通绘图中,图片的大小可以直接在 png() 和 pdf() 中指定,而绘图区大小则可以用 par() 中的 mar 或 mai 来指定。 但是在 ggplot2 中,图片大小依然可以在 png 和 pdf 中设定,但是边界大小, par 函数似乎就不奏效了。至今天探索,才发现原来这个参数隐藏在 theme 中,其名为 plot.margin 。
章鱼猫先生
2021/10/15
19K0
ggplot2 调整绘图区域大小
ggplot2绘图(R_03)
画图的思维:1.我的数据适合什么样的图?2.搜画图代码 3.仿制示例数据 4.套代码,调细节
用户10803254
2023/10/23
2490
【小程序】条件渲染与列表渲染
在小程序中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:
陶然同学
2023/02/24
1K0
【小程序】条件渲染与列表渲染
安全模式要如何使用?使用后要如何退出
安全模式是电脑系统的一种操作模式,可以在系统出现错误的时候开启安全模式,从而使得一些程序停止运行,之后就可以查找到系统的错误根源,从而进行解决。所以安全模式在一定程度上确保了电脑的运行安全,避免因为各种程序的运行导致电脑出现更多的问题,或者说阻碍系统的修复。当然,如果问题解决的话,也就可以退出安全模式,从而让电脑恢复正常运行状态。那么安全模式要如何使用?使用之后应该如何退出呢?
用户8739405
2021/06/17
3.2K0
十三.Vue列表渲染
十三.Vue列表渲染
Java架构师必看
2021/05/14
7240
十三.Vue列表渲染
如何优雅的使用列表
经常写Python程序的人,列表应该是使用率最高数据结构的了。我们使用列表的过程中,生成列表方式有很多种,哪一种方式性能是最好的呢?可能很多人都没有关心过这个问题。假设要生成一个有1000个元素的列表。采用下面哪一种方式生成最好呢?
TalkPython
2020/05/20
1.7K0
R绘图 | 快速入门ggplot2
本次演示我们以R自带的数据集diamonds为例进行绘图,由于数据量比较大我们使用tidyverse随机抽取1000条数据进行演示。
生信real
2022/12/20
1.5K0
R绘图 | 快速入门ggplot2
R语言绘图之ggplot2
1. ggplot2的安装:install.packages("ggplot2")。
一粒沙
2019/07/31
4.3K0
Vue 3 列表渲染
列表渲染,其实给人的感觉就是 JavaScript 中的 for 循环,只不过将其提取到 HTML 模板层面了,将其指令化,本质还是 for 循环。
公众号---人生代码
2020/11/03
1.5K0
Vue 3 列表渲染

相似问题

取消嵌套列表并使用ggplot进行绘图

214

使用绘图数据创建直方图(ggplot2)

20

如何使用ggplot2绘图

20

使用ggplot进行绘图

13

使用ggplot重现绘图

219
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文