правильное вертикальное выравнивание для угловых отметок по оси X на граненых рисунках ggplot - PullRequest
3 голосов
/ 20 января 2012

Мне нужна помощь в создании граненого графика с помеченными галочками по оси X, что, вероятно, лучше всего объяснить следующим примером:

require(ggplot2)
df <- data.frame(group=factor(c('sex','sex','race','race')), variable=c('Female','Male','White','African American'), value=1:4)
p <- ggplot(aes(x=variable, y=value), data=df) 
p <- p + geom_line()
p <- p + facet_grid(. ~ group, scale="free")
p <- p + opts(axis.text.x=theme_text(angle=45,hjust=1,vjust=1))
ggsave(p, file='faceted.pdf', width=6, height=4)

, который дает эту цифру, где x-метки справа смещены:

misaligned x-axis ticks

похоже, что проблема возникает при использовании scale="free" в facet_grid и связана с изменяющейся длиной метки тика.

Любые предложения приветствуются.

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Похоже на ошибку: https://github.com/hadley/ggplot2/issues/221, которая, по-видимому, была исправлена ​​в ggplot2 0.9 и более поздних версиях.

> help(package='ggplot2')
                Information on package ‘ggplot2’    
Description:
Package:            ggplot2
Type:               Package
Title:              An implementation of the Grammar of Graphics
Version:            0.8.9

(Слишком плохо для меня!)

Ошибка, воспроизводимая с:

qplot(reorder(model, hwy), hwy, data=mpg) +
    facet_grid(. ~ manufacturer, scales="free") +
    opts(axis.text.x = theme_text(angle=90))
2 голосов
/ 20 января 2012

Если у вас действительно есть несколько х-лейблов - кому нужны тики, приятель? Подавить их с помощью axis.ticks и избавиться от горизонтального / вертикального выравнивания.

require(ggplot2)
df <- data.frame(group=factor(c('sex','sex','race','race')),
                 variable=c('Female','Male','White','African American'), 
                 value=1:4)
p <- ggplot(df,aes(x=variable, y=value)) + geom_line()
p <- p + facet_grid(. ~ group, scale="free") 
p <- p + opts(axis.text.x=theme_text(angle=45), 
              axis.ticks = theme_blank(),axis.title.y=theme_blank())
ggsave(p, file='no_ticks.png', width=6, height=4)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...