R par (omd) не содержит в пределах mfrow - PullRequest
0 голосов
/ 23 декабря 2011

Мне бы хотелось, чтобы два графика отображались в двух отдельных местах на графике, поэтому я делаю:

par(mfrow=c(1,2))
plot(1:10,1:10)

Теперь я хотел бы, чтобы второй график был примерно на 25% короче первого графика, поэтому я настраиваю omd:

tmp <- par()$omd
tmp[4] <- 0.75
par(omd=tmp)
plot(1:10,1:10)

Проблема в том, что второй график отображается поверх первого графика. Как избежать этой проблемы с маржой?

1 Ответ

2 голосов
/ 23 декабря 2011

Может, попробовать вместо этого использовать layout?

layout(matrix(c(1, 1, 0, 2), ncol = 2L), widths = c(1,1),heights = c(0.5,1))
par(mar = c(3,2,2,2))
plot(1:10,1:10)
par(mar = c(3,2,2,2))
plot(1:10,1:10)

enter image description here

Полагаю, возможно, вы захотите установить высоту c(0.2,0.8), чтобы получить 25% -ное снижение?

Редактировать

Но я не думаю, что omd делает то, что вы думаете, делает. Он изменяет область внутри внешних полей, которая всегда будет включать обе области графика при установке par(mfrow = c(1,2)). То, что вы действительно хотите изменить, я думаю, plt, который изменяет размер текущей области черчения (используя quartz, как я на Mac):

quartz(width = 5,height = 5)
par(mfrow=c(1,2))
vec <- par("plt")
plot(1:10,1:10)
par(plt = vec * c(1,1,1,0.75))
plot(1:5,1:5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...