перекрывающиеся y-шкалы в фасете (scale = "free") - PullRequest
1 голос
/ 10 августа 2010

Я изучал ggplot в последние несколько недель.Как правило, я делаю вещи (хотя и медленно), но теперь я застрял.Я создал следующий граненый график: http://dl.dropbox.com/u/7752237/example_bad_y_scales.pdf

Гранение выполняется с помощью

pl <- pl + facet_wrap(~sci_name,ncol=1,scale="free")

Проблема: Числа на шкале Y выглядят не очень хорошо, особенно шкалы, которые идут от0-70 (цифры перекрываются).Я бы хотел как-то изменить количество разрывов по шкале y (скажем, 1 или 2).У кого-нибудь может быть есть идея, как это сделать?Любая помощь будет очень высоко ценится.:)

PS: я не включил минимальный пример, потому что думаю, что это не очень поможет для решения этой конкретной проблемы.

Правка после ответа Кохска:

Привет Кохске, Ух ты, это был очень быстрый ответ, спасибо!Тем не менее, я думаю, что это не очень хорошо работает с гранеными участками.Посмотрите на

p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
p <- p + facet_wrap(~gear,ncol=1,scale="free")

На шкале y это дает 3 перерыва на среднем графике и 8 разрывов на нижнем графике ... не очень согласованно (но, по крайней мере, не перекрывается, как в моем примере).

p2 <- p + scale_y_continuous(breaks=c(15,30),minor_breaks=c(10,20,25))

тоже не очень хорош: два главных тика на нижних графиках, только один на среднем и верхнем графике.При наличии весов с большей разницей, чем в mtcars, результат будет еще менее удовлетворительным.Есть еще идеи?;)

Редактировать после редактирования Кохска:

Привет, я не вижу, как это реализовать.Поиск ggplot и input_break в google дал только 10 результатов, ни один из них не помог.Я пробовал

p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
p <- p + facet_wrap(~gear,ncol=1,scale="free")
p$input_breaks<-function(., range) {
    pretty(range, n=3)
}
print(p)

Однако я не вижу никаких эффектов на графике (пробовал для n = 1, 3, 15).Не могли бы вы описать, как реализовать это на примере mtcars?Спасибо!

1 Ответ

3 голосов
/ 10 августа 2010

p <- ggplot (mtcars, aes (wt, mpg)) p <- p + geom_point () </p>

dev.new(height=1)
print(p)
dev.new(height=1)
p <- p + scale_y_continuous(breaks=c(15,30),minor_breaks=c(10,20,25))
print(p)

уловка scale_y_continuous, и вы можете указать в ней разрывы и незначительные разрывы.

отредактировано:

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

Trans$input_breaks<-function(., range) {
    pretty(range, n=3)
}
print(p)

изменение «n = 3» приводит к другой красивости.

отредактировано снова:

здесь заполненопример:

library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))+geom_point()
Trans$input_breaks<-function(., range) {
    pretty(range, n=100)
}
print(p)

в этом случае, вероятно, вы можете увидеть сотню тиков.изменив n = 100, вы можете настроить его.

обратите внимание, что это имеет побочный эффект.все графики после этого имеют одинаковое количество тактов, а также оси x и y имеют одинаковое количество тактов.

...