R: примечание оси подплота отличается в зависимости от того, использовалось ли устройство графика или нет

Поведение функций построения графика зависит от того, использовалось ли уже графическое устройство или нет, ср. минимальный рабочий пример ниже. В этом примере график испорчен: метки осей верхнего левого подграфа написаны в двух немного разных местах.

Я хотел бы, чтобы все метки осей (аннотации?) Во всех подграфах выглядели одинаково (размер шрифта, расстояние до оси) и хотели бы, чтобы шрифт был больше, чем обычно (для этого я использую par("cex")).

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

rm(list = ls(all = TRUE)) #remove all (old) variables from workspace
n<- 2
horizon<- 10
plotme<- array(0,c(n,n,horizon,2))
descr<- c("variable 1","variable 2")    #descr
gray((0:10)/10)                             #lists different types of gray
color<-c("black","#999999")
plotme[1,1,,1]<- 1:horizon
plotme[1,2,,1]<- 1:horizon
plotme[2,1,,1]<- 1:horizon
plotme[2,2,,1]<- 1:horizon
plotme[1,1,,2]<- horizon:1
plotme[1,2,,2]<- horizon:1
plotme[2,1,,2]<- horizon:1
plotme[2,2,,2]<- horizon:1

dev.close()
dev.new()
for (ii in 1:n){    #row
for (jj in 1:n){    #column of plotme
    par(mfrow= c(n,n), mfg= c(ii,jj), mai=c(0.4,0.5,0.5,0.4), cex=1.2)

    #Plot once, will be overdrawn by points
    plot(1:horizon,plotme[ii,jj,,1],col=color[1],type="b",lty="solid",lwd=3,pch=4,xaxs="i",yaxs="i")
    for (iter in 1:dim(plotme)[4]){
        points(1:horizon,plotme[ii,jj,,iter],col=color[iter],type="b",lty="solid",lwd=3,pch=4)}
}}

for (ii in 1:n){
for (jj in 1:n){
    #Same code again, but now dev is already open. Now axis labels are moved
    par(mfrow= c(n,n), mfg= c(ii,jj), mai=c(0.4,0.5,0.5,0.4), cex=1.2)
    plot(1:horizon,plotme[ii,jj,,1],col=color[1],type="b",lty="solid",lwd=3,pch=4,xaxs="i",yaxs="i")
    for (iter in 1:dim(plotme)[4]){
        points(1:horizon,plotme[ii,jj,,iter],col=color[iter],type="b",lty="solid",lwd=3,pch=4)}

    title(paste(jj, ">", ii, sep=""))
    if (ii==2 && jj==1){legend("top",legend=descr,col=color,lty="solid",lwd=3)}
}}

0 ответов

Другие вопросы по тегам