【问题标题】:ggplot2, long height plot format [duplicate]ggplot2,长高度绘图格式[重复]
【发布时间】:2020-06-21 22:08:44
【问题描述】:

我使用下面的代码

library(ggplot2)

N = 30
M = 16

dat <- stack(as.data.frame(matrix( rnorm(N*M,mean=0,sd=2), N, M)))
             
p <- ggplot(dat,aes(x = ind, y = values, fill=ind)) + 
  geom_boxplot() +
  theme(legend.position="none")

p + coord_flip()

制作看起来像这样的东西

但实际上我有 160 个变量要绘制(所以 M = 160,而不是 M =16),我想用类似的“外观”“堆叠”上述图,即带有“高度”大约是上面的 10 倍(或宽度的 10 倍),而不是下面的。

【问题讨论】:

  • 您能定义“比率”这个词吗?你的意思是“四分位间距”吗?那么四分位间距最大的箱线图在顶部,四分位间距最小的在底部?
  • 我认为 OP 的意思是“生成一个纵横比为 10:1(高:宽)的图形。
  • 我进行了修改,使其更清晰。这是地块的高度和宽度的比例。
  • 在这种情况下... theme(aspect.ratio=10)
  • @Limey 我用 theme(aspect.ratio=10) 尝试过,但是分辨率丢失并且输出很糟糕。

标签: r ggplot2 charts boxplot


【解决方案1】:

结束

 p <- p + theme(aspect.ratio=10)

或任何满足您需求的值。

降价解决方案将生成一个非常清晰的细长图。不幸的是,在这里发布原始代码是有问题的:块头由 SO 的降价引擎处理,我不知道如何转义它们。所以我必须描述它而不是粘贴它。

fig.height 和 fig.width 以英寸为单位指定尺寸,因此请使用以下块标题:

{r, fig.height=36, fig.width=3.2}

那么你的块代码是

library(ggplot2)

N = 30
M = 160

dat <- stack(as.data.frame(matrix( rnorm(N*M,mean=0,sd=2), N, M)))
             
ggplot(dat,aes(x = ind, y = values, fill=ind)) + 
  geom_boxplot() +
  theme(legend.position="none") + 
  coord_flip() +
  theme(aspect.ratio=16)

由于显而易见的原因,我没有发布结果图像!

玩转fig.height、fig.width 和aspect.ratio 的值,直到得到你喜欢的外观。

【讨论】:

  • 谢谢。但是尝试使用示例代码并查看输出,它并不漂亮。
  • 您的根本问题是您有 160 个组。无论你做什么,这都会产生一个非常高、很薄的图表。例如,如果每个箱须图占据半英寸的垂直空间,您将获得 80 英寸高的图像。如果每个黑白占 1/32 英寸,则您的绘图高 5 英寸将适合 A4(或信纸)页面,但框会太小以至于无法阅读或它们会重叠。有些东西必须付出。如果你不能妥协,那么我看不到解决方案。
  • 谢谢。我不想放在 A4 或字母页面上,而是放在 HTML 页面上,您可以在其中尽可能多地滚动。换句话说,我想要 10 个像第一个一样的图表,相互堆叠。
  • 然后就玩aspect.ratio,直到你得到你想要的样子。您可能需要使用绘图的像素尺寸来获得您想要的东西。请记住,RStudio 预览会缩放到窗口的大小。我会更新我的答案。
  • 如果您可以检查解决方案的输出(并可能粘贴它),那将非常有用,谢谢。
猜你喜欢
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 2014-11-20
  • 2010-11-13
相关资源
最近更新 更多