【问题标题】:How to display really tall ggplot?如何显示非常高的ggplot?
【发布时间】:2017-05-18 05:08:37
【问题描述】:

例如,在尝试显示具有一百行的多面图时:

library(ggplot2)
set.seed(111)
tmp_d <- data.frame(group = rep(1:100, each = 5), 
                    x = rep(1:5, times = 100),
                    y = runif(1:500))
## looks like
#   group x         y
# 1     1 1 0.5929813
# 2     1 2 0.7264811
# 3     1 3 0.3704220
# 4     1 4 0.5149238
# 5     1 5 0.3776632
# 6     2 1 0.4183373
# ...

ggplot(tmp_d, aes(x,y)) +
    geom_point() +
    facet_wrap(~ group, ncol = 1)

我在 Rstudio 的绘图窗口中弄得一团糟,无法放大或滚动:

不方便的解决方法涉及ggsaveknitr

使用ggsave:

ggsave('tmp_20170104_long_ggplot.png', p, height = 100, limitsize = F)

使用knitr:

将绘图嵌入到knitr 代码块中,fig.height 具有较大的任意值:

---
title: "Test plot of tall ggplot2"

output:
    html_document
---

```{r, fig.height = 100}
library(ggplot2)
set.seed(111)
tmp_d <- data.frame(group = rep(1:100, each = 5), 
                    x = rep(1:5, times = 100),
                    y = runif(1:500))

ggplot(tmp_d, aes(x,y)) +
    geom_point() +
    facet_wrap(~ group, ncol = 1)
```

两个问题:

  1. 如何轻松显示此类图?
  2. 如何确定每种解决方法的高度值?

【问题讨论】:

  • 一个有 100 个面板的情节似乎......设计不当。
  • @Roland 为什么?我只想打印它,以便我可以单独查看每个。
  • 你打算把它打印在房子的墙上吗?生成单独的图。
  • 除了更容易从默认绘图选项生成之外,为什么生成单独的绘图有任何优势?
  • 因为这样您就可以在不滚动的情况下在它们之间切换,随意排列它们并且可以实际打印它们。

标签: r ggplot2 rstudio knitr


【解决方案1】:

1- 试试dev.new(width=3, height=10, noRStudioGD = TRUE)。如果您的绘图对于屏幕来说太高,您可以将其绘制在 pdf 文件上并使用 pdf 查看器进行滚动,

library(ggplot2)
set.seed(111)
tmp_d <- data.frame(group = rep(1:100, each = 5), 
                    x = rep(1:5, times = 100),
                    y = runif(1:500))

p <- ggplot(tmp_d, aes(x,y)) +
  geom_point() +
  facet_wrap(~ group, ncol = 1)

nc <- length(unique(ggplot_build(p)[["data"]][[1]][["PANEL"]]))

ggsave("tall.pdf", p, width=7, height = nc * 7 + 2, limitsize = FALSE)

2- 如果您有 N 排面板并且每个面板的高度应为 H 英寸,则 N x H 加上一些空间用于放置轴等应该可以正常工作。

【讨论】:

  • 谢谢,看起来很有希望,尽管提供的参数导致我的 R 会话崩溃:(
  • 嗯,尝试更明确的设备,例如x11()quartz() 等。Rstudio 也可能会尝试干预(可能是崩溃的原因?),所以也可以从独立的 vanilla R 会话中尝试。
  • 当您尝试使用您的参数绘制我的图表时,您会得到什么?我已经尝试过香草 R 会话,但大小仍然不正确。 (此外,从普通 R 会话调整窗口大小会导致 R Gui 崩溃)。
  • 我没有遇到任何崩溃,但我的屏幕不够高,无法显示 100 个垂直面板。你不能用 facet_wrap 代替,或者把情节分成多页吗?
  • 如果你想滚动,一种选择是在 pdf 上绘图,让 pdf 查看器处理滚动。我不知道具有滚动功能的交互式设备。是的,我的意思是分开的地块。
猜你喜欢
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
相关资源
最近更新 更多