首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调整ggplot中的纵横比?

如何调整ggplot中的纵横比?
EN

Stack Overflow用户
提问于 2011-08-14 20:36:31
回答 3查看 109.5K关注 0票数 93

我正在尝试调整绘图的大小以适合我的文档,但我很难将绘制的图表确定为正方形。

示例:

代码语言:javascript
运行
复制
pdf(file = "./out.pdf", width = 5, height = 5)
p <- ggplot(mydata, aes(x = col1, y = col2))
print(p)
aux <- dev.off()

尽管x和y的限制是相同的,但结果中的图不是正方形的。我猜R使封闭面板为5x5“,但并不关心图的实际大小。

我如何解压我的图表?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-14 23:26:06

ggplot中,保持绘图纵横比的机制是向绘图中添加一个coord_fixed()图层。这将保留绘图本身的纵横比,而不考虑实际边界框的形状。

(我还建议您使用ggsave将结果图保存为pdf/png/etc,而不是pdf(); print(p); dev.off()序列。)

代码语言:javascript
运行
复制
library(ggplot2)
df <- data.frame(
    x = runif(100, 0, 5),
    y = runif(100, 0, 5))

ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed()

票数 123
EN

Stack Overflow用户

发布于 2015-07-31 23:24:32

出于完整性考虑:如果您想要考虑完全不同的轴限制:

代码语言:javascript
运行
复制
df <- data.frame(
  x = runif(100, 0, 5000),
  y = runif(100, 0, 5))
ratio.display <- 4/3
ratio.values <- (max(df$x)-min(df$x))/(max(df$y)-min(df$y))
plot <- ggplot(df, aes(x=x, y=y)) + geom_point()
plot + coord_fixed(ratio.values / ratio.display)

结果是:

票数 18
EN

Stack Overflow用户

发布于 2021-12-15 22:28:38

基于baptiste的建议和Graipheranswer,因为它优雅和实用。

代码语言:javascript
运行
复制
df <- data.frame(
  x = runif(100, 0, 5000),
  y = runif(100, 0, 5))
aspect.ratio <- 4/3
ratio.values <- (max(df$x)-min(df$x))/(max(df$y)-min(df$y))
plot <- ggplot(df, aes(x=x, y=y)) + geom_point() + theme(aspect.ratio=4/3)

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

https://stackoverflow.com/questions/7056836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档