Следующий код использовался, но больше не работает. Кто-нибудь знает, что происходит? Это должно быть некоторое изменение в базовом файле gtable.Установка ширины в объекте gtable обрушивает график; это работало, но больше этого не происходит.
require(cowplot) # for plot_grid()
require(grid) # for unit_max()
# make two plots
plot.iris <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point() + facet_grid(. ~ Species) + stat_smooth(method = "lm") +
background_grid(major = 'y', minor = "none") +
panel_border()
plot.mpg <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) +
geom_point(size=2.5)
g.iris <- ggplotGrob(plot.iris) # convert to gtable
g.mpg <- ggplotGrob(plot.mpg) # convert to gtable
iris.widths <- g.iris$widths[1:3] # extract the first three widths,
# corresponding to left margin, y lab, and y axis
mpg.widths <- g.mpg$widths[1:3] # same for mpg plot
max.widths <- unit.pmax(iris.widths, mpg.widths) # calculate maximum widths
g.iris$widths[1:3] <- max.widths # assign max. widths to iris gtable
g.mpg$widths[1:3] <- max.widths # assign max widths to mpg gtable
plot_grid(g.iris, g.mpg, labels = "AUTO", ncol = 1)
Полученный график выглядит следующим образом:
Что это должно выглядеть это (с линии оси у идеально выровнены по вертикали):
ошибка, кажется, происходит в эта линия:
g.iris$widths[1:3] <- max.widths
Любое понимание будет оценено по достоинству.
Обратите внимание, что подобные решения были использованы в течение длительного времени, см., Например, here. И функция plot_grid()
в cowplot использует код, подобный этому, также для выравнивания графиков, и он все еще работает. Так что это полностью озадачило меня. не
действительно, 'Сетка ::: unit.list()' необходимо было в течение некоторого времени; Я забыл, когда начал замечать разрыв с ggplot2. Эта неэкранированная функция сетки стала почти обязательным требованием для такого выравнивания графика, что может быть проблематичным в пакете. – baptiste
Спасибо большое! Проблема с осевыми линиями является ошибкой в последней версии ggplot2 версии 2.1.0. Это уже исправлено в github с отправкой в CRAN. –
Спасибо за это. –