R {ggplot2} Можно ли запросить, какие отметки для графика? - PullRequest
4 голосов
/ 28 июня 2011

Используя пример с веб-сайта Хэдли :

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

, который создает:

example figure

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

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

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

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

myBreaks <- tickMarks(m)

, чтобы впоследствии я мог вызвать:

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

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

1 Ответ

3 голосов
/ 28 июня 2011

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

# 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.

...