2011-02-18 2 views
3

Есть ли способ включить панель для неиспользуемых уровней фактора, используемого в огранке?Включить неиспользуемые уровни факторов в фасетах с ggplot2

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

Но когда данные для одной из строк не содержат данных для определенного уровня грани, количество панелей будет отличаться и столбцы не выстраиваются в линию. Например, обратите внимание последняя строка отсутствует в «Математика II» панель:

Example plot http://dl.dropbox.com/u/14792859/ggplot2%20facet%20levels.png

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

+0

Используете ли вы один и тот же файл данных для каждого из графиков или создаете для каждого из них новые? – James

+1

facet_wrap (..., drop = FALSE) должен работать, но не кажется, в моей версии ggplot2 - отправил запрос в список ggplot2 –

+0

@James Это другой формат данных для каждого сюжета, но я уверен, что переменная для огранки является фактором с одинаковыми уровнями (например, 'factor (df $ subject, levels = union (levels (df $ subject, other.df $ subject))). –

ответ

3

Как упоминал Бен Болкер, это похоже на ошибку в ggplot2, вызванную ошибкой в ​​plyr. Это будет исправлено в предстоящем выпуске plyr 1.5.

В то же время, я работал вокруг проблемы путем создания единого сюжета и используя facet_grid, с рядами, задающие различные меры, которые будут построены. Проблема в том, что я не могу указать другой scale_fill_manual для двух нижних панелей, поэтому вместо этого я использовал цвет хода для средней панели - не идеальный, но достаточно хороший.

Спасибо Бен за то, что вы поняли это и начали рассылку.

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