我正在使用faceg_wrap和ggplot创建一个facet图。我的问题是我的方面总是看起来像非常短,非常宽的矩形,但我希望它们是方形的,这样它们更容易理解。理想情况下,我想指定我想要的列数,并让ggplot弄清楚绘图的高度应该是多少,以便所有刻面都是正方形。这可能吗?
答案 0 :(得分:5)
也许aspect.ratio
有帮助:
df <- data.frame(x = runif(100, 0,10), y = runif(100, 0, 50), z=gl(4,25))
ggplot(df, aes(x, y)) +
geom_point() +
facet_wrap(~ z, ncol = 4) +
theme(aspect.ratio = 1) # try with and without
答案 1 :(得分:0)
我理解这个问题与lukeA略有不同。我以为你希望这些地块以n x m的方式排列,尺寸尽可能接近“方形”。
ggplot(df, aes(x, y)) +
geom_point() +
facet_wrap(~ z, ncol = sqrt(length(levels(df$z))) )
答案 2 :(得分:0)
g = ggplotGrob(p)
g$respect = TRUE
require(grid)
grid.draw(g)
答案 3 :(得分:0)
使用coord_fixed(1)就可以了。似乎我使用的是较旧版本的ggplot,因此主题(aspect.ratio = 1)对我不起作用。
df <- data.frame(x = runif(100, 0,10), y = runif(100, 0, 50), z=gl(4,25))
ggplot(df, aes(x, y)) +
geom_point() +
facet_wrap(~ z, ncol = 4) +
coord_fixed(1)