【问题标题】:What does %>% do in this `ggplot` command? [closed]%>% 在这个 `ggplot` 命令中做了什么? [关闭]
【发布时间】:2015-12-01 04:34:54
【问题描述】:

我试图理解 Max Woolf 提供的 jupyter notebook 中的 ggplot 示例。这是命令:

plot <- ggplot(df %>% filter(num_pickups > 10), aes(x=long, y=lat)) +
            geom_point(color="white", size=0.06) +
            scale_x_continuous(limits=c(min_long, max_long)) +
            scale_y_continuous(limits=c(min_lat, max_lat)) +
            theme_map_dark()

png("nyc-taxi-3.png", w=600, h=600, res=300)
plot
dev.off()

我的问题:

  1. %&gt;% 有什么作用?
  2. 在内部,我推测ggplot()geom_point()scale_x_continuous() 等都是ggplot 包的一部分,对吗?将plot 变量加在一起时,它们如何做正确的事情?
  3. 是否只有一个绘图上下文? png() 函数调用会生成一个 PNG 文件,但系统如何知道使用哪个 ggplot() 调用?
  4. 单独运行plot 有什么作用?它是如何做到的?
  5. dev 在哪里?除了dev.off(),还有其他dev 命令吗?
  6. 当我在 jupyter 中运行它时,结果是一个具有 400 万个点的 PDF 点,这会导致以下命令行错误消息:

    [I 23:26:00.318 NotebookApp] Malformed HTTP message from 127.0.0.1: Content-Length too long

我可以抽取 1% 的点来避免这个问题吗?我该怎么做?

【问题讨论】:

  • %&gt;% 是一个管道运算符,它实际上是dplyr 库(连同filter 函数)的一部分,而不是来自ggplot2 库。要采样 1%,dplyr 库中有一个 sample_frac function。类似于(df %&gt;% sample_frac(0.01))
  • 理想情况下,每个帖子一次应该只问一个问题,因为他们最多只能有一个被接受的答案。
  • Q4:apropos("^dev\\.")
  • @MrFlick,没错,但所有这些似乎都有关联。
  • 当您在 R 中运行 png 文件时,您是否真的在 png 文件上完成了绘图?我本来希望它在该代码中为空。

标签: r ggplot2


【解决方案1】:
  1. %&gt;% 是从magrittr 包重新导出的管道运算符。从阅读小插图开始。

    Introducing magrittr

  2. 向 ggplot 添加内容会更改创建的对象。 ggplot 的 print 方法根据变量的内容绘制适当的图。看看str(plot)

  3. 绘图在设备上绘制:文件或 R 图形窗口。 png 打开一个 PNG 文件设备。

  4. 我假设你的意思是你的 ggplot 对象,而不是同名的函数。在命令行输入plot会调用print.ggplot(plot),它会在当前设备中绘制绘图,默认为R图形窗口。

  5. 正如 Ben Bolker 所说,试试 apropos("dev")。也可以试试?dev.offfind("dev.off")getAnywhere("dev.off")

  6. 试试sample函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多