4

我使用ggplot2knitr发布带有右侧图例的散点图。图例包含在纵横比中,因此破坏了绘图的“方形”,如默认主题中所示。当图例文本变得比“a”和“b”长一点时,图形变成“长矩形”而不是“正方形”。

我想保持图表“平方”,因此想从图表的纵横比中排除图例ggplot2。My.Rprofile有以下信息可以强制ggplot2生成具有更大文本和更多围绕轴标题的空间的低色图:

theme_set(theme_bw(16))
theme_update(
  axis.title.y = element_text(angle = 90, vjust = -.25),
  axis.title.x = element_text(vjust = -1),
  plot.margin = unit(c(1,1,1,1), "cm")
)

我可以在此处添加任何内容以从纵横比中排除图例吗?到目前为止,使用coord_equal和的操作都失败了,以及 和选项也是如此。谢谢你的帮助!coord_fixedfig.widthfig.height

编辑:删除了工作示例,下面用完整的示例代码回答了问题(抱歉延迟批准答案)。

4

1 回答 1

5

设置coord_fixed()应该可以解决问题:

library(ggplot2)
library(gridExtra)  ## for grid.arrange()

## Create some data with one longer label
cars <- transform(mtcars, 
           cyl = factor(cyl, labels=c("4","6","8 is big")))


## Compute ratio needed to make the figure square
## (For a taller narrow plot, multiply ratio by number > 1; 
##  for a squatter plot, multiply it by number in the interval (0,1))    
ratio <- with(cars, diff(range(mpg))/diff(range(wt)))

## Make plots with and without a legend
a <- ggplot(cars, aes(mpg, wt)) + 
     geom_point() + coord_fixed(ratio=ratio)

b <- ggplot(cars, aes(mpg, wt, color=cyl)) + 
     geom_point() + coord_fixed(ratio=ratio)

## Plot them to confirm that coord_fixed does fix the aspect ratio
grid.arrange(a,b, ncol=2)

在此处输入图像描述

于 2013-01-31T17:47:43.407 回答