Вопрос по r, ggplot2 – Как отображать метки полос под графиком при огранке?

11

Кажется, что полосы всегда выше сюжета, созданногоggplot2, Могут ли они быть перемещены ниже сюжета?

Например:

<code>library(ggplot2) 
qplot(hwy, cty, data = mpg) + facet_grid( . ~ manufacturer)
</code>

отображает информацию об автомобиле сверху. Могут ли они отображаться быть внизу?

Смотрите также:stackoverflow.com/questions/3261597/… (еще один негативный ответ) Ben Bolker
Подобный вопрос был задан в списке рассылки ggplot когда-то.See here Sandy Muspratt
Спасибо!!! Я не понимал, что это было так сложно Max C

Ваш Ответ

1   ответ
7

Update: С помощьюggplot2 версия 2.1.0, рассмотрите возможность использованияswitch = 'x', Увидеть?facet_grid для деталей.

С помощьюgtable функции, легко переместить полосу. (Или посмотриВот для другой версии - замена оси X и полосы)

library(ggplot2)
library(gtable)
library(grid)

p <- ggplot(mpg, aes(hwy, cty)) + geom_point() + facet_grid( . ~ manufacturer) +
     theme(strip.text.x = element_text(angle = 90, vjust = 1),
           strip.background = element_rect(fill = NA))

# Convert the plot to a grob
gt <- ggplotGrob(p)

# Get the positions of the panels in the layout: t = top, l = left, ...
panels <-c(subset(gt$layout, grepl("panel", gt$layout$name), select = t:r))

# Add a row below the x-axis tick mark labels,
# the same height as the strip
gt = gtable_add_rows(gt, gt$height[min(panels$t)-1], max(panels$b) + 2)

# Get the strip grob
stripGrob = gtable_filter(gt, "strip-t")

# Insert the strip grob into the new row
gt = gtable_add_grob(gt, stripGrob, t = max(panels$b) + 3, l = min(panels$l), r = max(panels$r))

# remove the old strip
gt = gt[-(min(panels$t)-1), ]

grid.newpage()
grid.draw(gt)

enter image description here

Error: User Rate Limit ExceededaboveError: User Rate Limit Exceededgt = gtable_add_grob(gt, stripGrob, t = max(panels$b) + 1, l = min(panels$l), r = max(panels$r))Error: User Rate Limit Exceeded

Похожие вопросы