我试图调整绘图大小以适应我的文档,但是我很难让绘制的图形成为一个正方形。
示例:
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英寸,但不关心实际图形的大小。
我该如何使我的图形不再扭曲?
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()
theme(aspect.ratio=1)
。df <- data.frame(
x = runif(100, 0, 50),
y = runif(100, 0, 5))
ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed()
那么情节将如下所示:
coord_fixed()函数还有一个参数可以调整轴的比例:
ratio
纵横轴的比例,以 y / x 表示
因此,可以使用以下代码制作正方形的绘图:
ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed(ratio=10)
但是你需要根据变量或图形区域的限制进行调整(并非所有限制都像这些示例一样可以整除)。
为了完整起见: 如果您想考虑非常不同的轴限制:
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)
导致:
plot + theme(aspect.ratio=4/3)
更好在于什么?ggplot可以有多个图层、多个数据集,并且轴可以具有任意扩展因子,因此从一个数据源计算y/x的比率似乎非常脆弱。 - baptisteaspect.ratio
。根据您的布局,有3种方法可以更改图像的纵横比(取决于您的工作流程)。myPlot <- ggplot(data = iris,
aes(x=Species, y = Sepal.Length)) +
geom_point() +
theme(aspect.ratio = 6.5/11)
#2. 使用ggsave
保存图像时
ggsave("images/plot1.png", myPlot, width=11, height=6.5, dpi=400)
#3. 在rmd文档中。如果您计划使用officedown
(并创建docx作为文档输出),那么我发现6.5/11的纵横比与fig.width
为9.4的组合在横向页面上是最好的。
<!---BLOCK_LANDSCAPE_START--->
```{r fig.id="my-fig", fig.cap="", fig.width=9.4, fig.asp = 6.5/11}
myPlot
```
<!---BLOCK_LANDSCAPE_STOP--->
hjust
位置 - 尝试opts(axis.title.y=theme_text(hjust=10))
。但是很遗憾,这似乎行不通。请参见 ggplot 邮件列表讨论和 @Baptiste 的回答:http://groups.google.com/group/ggplot2/browse_thread/thread/7f8a51b61af0febb。 - Andriey=runif(100, 0, 50)
,则图形的方面比例不再是正方形。coord_fixed()
只会使每个轴的比例尺相等,是这样吗? - a different ben