2016-09-01 3 views
-2

EDIT: уточнение для комментария @ Gregor, я хотел бы установить границы в контексте stat_summary - в этом случае фактическое масштабирование по умолчанию. Только предварительные средние данные выпадают на сторону моих желаемых границ. Затем я хотел бы установить перерывы, которые, по-видимому, требуют использования scale_continuous.Установить перерывы/метки с stat_summary в GGplot2

Я некоторое время огляделся и, по крайней мере, some mailing list posts описал «проблемы, с которыми иногда сталкиваются новые пользователи» с настройками.

Однако, в то время как я больше не спутать на этом уровень около scale_continuous цензурирования недоступных данных, кажется, я свожусь к следующей неудобной коде указать перерывы при использовании stat_summary:

ggplot(data, aes(x=trial, linetype=PrimaryDx, y=mTT, color=hand)) + 
    stat_summary(fun.y = mean, geom = "line") + 
    scale_y_continuous(limits = c(1,2), breaks = seq(1, 2, 0.2), 
        oob=function(x, r) x) ## This seems silly 

Здесь , scale_y_continuous, конечно, будет подвергать цензуре данные за пределами границ по умолчанию. Вместо oob=censor я предоставляю простую функцию идентификации.

В течение жизни я не могу найти другого способа определить перерывы, чем с помощью функций scale_([xy]_)?continuous. [xy]lim и coord_cartesian как только установлен лимит.

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

+0

Я не уверен, что все ваши разговоры о масштабировании имеют отношение ко всему. Является ли проблема, по которой вы хотели бы (a) увеличить масштаб, (b) установить перерывы и (c) не пропускать данные, выходящие за рамки? – Gregor

+0

Кроме того, как вы думаете, вы могли бы сделать [воспроизводимый пример] (http://stackoverflow.com/q/5963269/903061)? В вашем текущем коде даже нет фрейма данных, но из названий столбцов он не похож на встроенные данные - наконец, не на то, что я узнаю. – Gregor

+0

Зачем вам нужно устанавливать определенные перерывы? – Roland

ответ

2

Вы можете использовать coord_cartesian для увеличения без пропуска вне границ данных и еще множество разрывов с помощью scale_y_continuous. Добавление scale_y_continuous к сюжету не означает, что вы должны установить лимиты внутри scale_y_continuous.

Демонстрируя с mtcars:

p = ggplot(mtcars, aes(x = factor(cyl), y = mpg)) + 
    geom_boxplot() + 
    scale_y_continuous(breaks = c(15.2, 19.7, 26)) 

gridExtra::grid.arrange(p, p + coord_cartesian(ylim = c(15, 28)), ncol = 2) 

enter image description here

выше график демонстрирует это. Я установил разрывы у медианов, чтобы было ясно, что медиана в сводке ящика не изменяется после масштабирования.

+0

И действительно - вы доказали мое подозрение было правильно! Но теперь, когда я вижу ваш пример, я еще раз ощущаю ценность воспроизводимого примера ... –

Смежные вопросы