Вращение меток оси Y с мозаичными графиками БЕЗ перекрытия

Этот вопрос очень похож на этот, но с другой точки зрения на который не ответили.
Следуя предложенному коду, я могу генерировать мозаичные графики и поворачивать метки так, чтобы они были разборчивы. Проблема возникает, когда (кажется) функция mosaic() из пакета vcd не распознает вращение и поэтому не адаптирует график в соответствии с метками, что приводит к следующим результатам:

мозаичный график

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

Код

aux = structure(c(0L, 0L, 3L, 46L, 107L, 14L, 0L, 0L, 4L, 0L, 0L, 2L, 
9L, 0L, 23L, 2L, 1L, 3L, 14L, 1L, 8L, 26L, 6L, 11L, 6L, 1L, 6L, 
0L, 1L, 1L, 29L, 10L, 62L, 1L, 3L, 1L, 1L, 3L, 1L), .Dim = c(3L, 
13L), .Dimnames = list(abcdefghi = c("Madrid", "Valencia", "Granada"
), jklmnopqr = c("roknbjftxcwl", "mfchldbxuyig", "gtyoxeduijpw", 
"akbcefymvsiw", "ucbfxplietqk", "mzeykauprfdh", "piermgawyjht", 
"chjvatqbylxo", "merhcogjflbd", "wiyrugvmhjlq", "glszdqmjhkov", 
"giowaxrtsknm", "pxucytzvljqw")), class = "table")

library(vcd)
colours = c("brown","darkgreen","darkgrey","orange","darkred","gold","blue","red",
            "white","pink","purple","navy","lightblue","green","peachpuff","violet","yellow","yellow4")
aux_names = names(attr(aux,"dimnames"))
mosaic(aux,main=paste(aux_names,collapse=" vs. "),
       gp=gpar(fill=matrix(sample(colours,max(nrow(aux),ncol(aux))),1,max(nrow(aux),ncol(aux)))),
       pop = FALSE,labeling = labeling_border(rot_labels=c(90,0,0,0),
                                              just_labels=c("left","right")))

person boski    schedule 04.06.2019    source источник
comment
Вы используете функцию mosaic из пакета vcd?   -  person KoenV    schedule 04.06.2019
comment
@KoenV да, я   -  person boski    schedule 04.06.2019
comment
Я получаю сообщение об ошибке при выполнении вашего кода. После вызова mosaic: ошибка в sample.int(length(x), size, replace, prob): невозможно взять выборку больше, чем население, когда «replace = FALSE»   -  person KoenV    schedule 04.06.2019
comment
@KoenV мой плохой, забыл одну строку кода. должно работать сейчас.   -  person boski    schedule 04.06.2019
comment
отредактировано еще раз, извините за это.   -  person boski    schedule 04.06.2019


Ответы (1)


Этот код должен делать то, что, как я думаю, вам нужно.

mosaic(aux,main=paste(aux_names,collapse=" vs. "),
       gp=gpar(fill=matrix(sample(colours,max(nrow(aux),ncol(aux))),1,max(nrow(aux),ncol(aux)))),
       pop = FALSE,labeling = labeling_border(rot_labels=c(90,0,0,0),
                                              just_labels=c("left","right"),
                                              offset_varnames = c(8,8,8,8)),
       margins = c(10, 10, 10, 10))

маргинальный участок

person Christoffer Sannes    schedule 04.06.2019
comment
График функций Vcd с использованием strucplot, дополнительную документацию можно найти здесь cran.r- project.org/web/packages/vcd/vcd.pdf - person Christoffer Sannes; 04.06.2019