R {ggplot2} Можно ли запросить галочки для графика?

На примере веб-сайта Хэдли:

> (m <- qplot(rating, votes, data=subset(movies, votes > 1000), na.rm = T))

Что создает:

пример рисунка

Мой вопрос: можно ли определить, что отмечают галочки после создания объекта графика? (Я хочу удалить первую автоматически сгенерированную точку останова)

Общие сведения. На приведенном выше графике отчетливо видно, что разрывы по оси X находятся в диапазоне от 2 до 9. Чтобы получить это вручную, используйте:

m + scale_x_continuous( breaks = c(2:9) )

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

myBreaks <- tickMarks(m)

Чтобы я мог впоследствии позвонить:

m + scale_x_continuous( breaks = myBreaks[-1] )

где я удалил первый разрыв из массива.


person M. Tibbits    schedule 28.06.2011    source источник
comment
Похоже, вы должны иметь доступ к компонентам сетки, из которых состоит сюжет. У меня нет большого опыта в этом, но этот пост выглядит информативным: rwiki.sciviews.org/, может быть, кто-нибудь придет и преподаст нам урок.   -  person Chase    schedule 28.06.2011
comment
Я не уверен, что вы имеете в виду, но просто достаточно ли установить разрывы вручную после проверки фигуры, например: m + scale_x_continuous(breaks=3:9)?   -  person kohske    schedule 28.06.2011
comment
Я собираюсь провести большое симуляционное исследование, в котором я сделаю примерно 1000 графиков. Мне нужно автоматизированное решение -- я рисую цифры в формате четыре на четыре разметка сетки, а сжатые области просмотра выглядят размытыми из-за слишком большого количества делений.   -  person M. Tibbits    schedule 28.06.2011
comment
Ваш вопрос очень похож на вопрос, который я задал пару месяцев назад: stackoverflow.com/q/5380417/602276. В ответ Хэдли сказал, что сделать это непросто, но, надеюсь, это станет возможным в будущем выпуске ggplot2.   -  person Andrie    schedule 28.06.2011


Ответы (1)


Я не уверен, что это то, что вы хотите, но вы можете взломать:

# drop first break
sx <- scale_x_continuous()
sx$.tr$input_breaks <- function(., range) grid.pretty(range)[-1]
m <- qplot(rating, votes, data=subset(movies, votes > 1000), na.rm = T)
m + sx

# reduce the breaks into half
sx$.tr$input_breaks <- function(., range) {
  r <- grid.pretty(range); r[seq_len(length(r)/2)*2]
}
m + sx

# set the (rough) number of breaks  
sx$.tr$input_breaks <- function(., range) pretty(range, 3)
m + sx

но обратите внимание, что это также влияет на ось Y...

И, возможно, это самый простой способ создать свой собственный объект трансформации.

TransIdentity2 <- Trans$new("identity2", "force", "force", "force")
TransIdentity2$input_breaks <- function(., range) pretty(range, 3)

m + scale_x_continuous(trans="identity2")

в этом случае это не влияет на ось Y.

person kohske    schedule 28.06.2011