Удалите ярлыки facet_wrap полностью

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

<code>library(MASS)
library(ggplot2)
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
     facet_wrap(~ID) + 
     theme(strip.text.x = element_text(size=0))
</code>

Так можно ли полностью избавиться от (теперь пустого) полосы strip.background, чтобы освободить место для «спарклайнов»?

Или, альтернативно, есть лучший способ получить это & quot;sparkline& Quot; эффект для большого числа бинарных временных рядов, как это?

Ответы на вопрос(4)

Решение Вопроса

Для ggplot v2.1.0 или выше используйтеelement_blank() удалить ненужные элементы:

library(MASS) # To get the data
library(ggplot2)

qplot(
  week,
  y,
  data = bacteria,
  group = ID,
  geom = c('point', 'line'),
  xlab = '',
  ylab = ''
) + 
facet_wrap(~ ID) + 
theme(
  strip.background = element_blank(),
  strip.text.x = element_blank()
)

В этом случае элемент, который вы пытаетесь удалить, называетсяstrip.

ggplot2 figure without panel titles

Alternative using ggplot grob layout

В старых версияхggplot (до v2.1.0) текст полосы занимает строки в макете gtable.

element_blank удаляет текст и фон, но не удаляет пространство, занимаемое строкой.

Этот код удаляет эти строки из макета:

library(ggplot2)
library(grid)

p <- qplot(
  week,
  y,
  data = bacteria,
  group = ID,
  geom = c('point', 'line'),
  xlab = '',
  ylab = ''
) + 
facet_wrap(~ ID)

# Get the ggplot grob
gt <- ggplotGrob(p)

# Locate the tops of the plot panels
panels <- grep("panel", gt$layout$name)
top <- unique(gt$layout$t[panels])

# Remove the rows immediately above the plot panel
gt = gt[-(top-1), ]

# Draw it
grid.newpage()
grid.draw(gt)
 06 окт. 2017 г., 11:07
кто-нибудь еще получаетError in apply(strip_mat, 1, max_height) : dim(X) must have a positive length ?

Насколько я могу судить, ответ Сэнди является правильным, но я думаю, что стоит упомянуть, что, по-видимому, существует небольшая разница в ширине графика без граней и ширине графика с удаленными гранями.

Это не очевидно, если вы не ищете его, но, если вы складываете графики, используя макеты окон просмотра, которые Уикхем рекомендует в своей книге, разница становится очевидной.

 22 окт. 2012 г., 04:18
Можете ли вы уточнить это на примере?
 23 окт. 2012 г., 05:38
Хм. Давайте посмотрим ...
 23 окт. 2012 г., 05:47
Вот и мыlink, Я использую ggplot 's' diamonds 'apos; набор данных, поэтому он должен работать для всех. Обратите внимание, что правая граница грани графа немного уже, чем грани без графа.
 29 нояб. 2012 г., 17:58
Это не очень хорошее сравнение, поскольку оно переключается на facet_grid (с тестом панели сбоку) от facet_wrap (с панелями сверху, в вопросе OP). Ключевая проблема заключается в том, что текст панели не сжимается: если вы измените размер окна qplot в вопросе OP, вы можете легко увидеть проблему, которую может вызвать текст панели. Поскольку ось X часто имеет ранее известные значения, а ось Y часто имеет ранее неизвестные значения, это особенно прискорбно.

Я использую ggplot2 версии 1, и требуемые команды изменились. Вместо

ggplot() ... + 
opts(strip.background = theme_blank(), strip.text.x = theme_blank())

вы сейчас используете

ggplot() ... + 
theme(strip.background = element_blank(), strip.text = element_blank())

Для более подробной информации смотритеhttp://docs.ggplot2.org/current/theme.html

Обновленный ответ Сэнди кажется хорошим, но, возможно, он устарел из-за обновлений ggplot? Из того, что я могу сказать, следующий код (упрощенная версия оригинального ответа Сэнди) воспроизводит оригинальный граф Шона без лишних пробелов:

library(ggplot2)
library(grid)
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
 facet_wrap(~ID) + 
 theme(strip.text.x = element_blank())

Я использую ggplot 2.0.0.

Ваш ответ на вопрос