как показать легенду на двойной оси g gpl

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

Kohske является очень хорошим примером того, как это сделать, что до сих пор я использовал. Тем не менее, я ограничиваюсь включением легенды для обеих осей y. Я также видел подобные вопросы здесь и здесь, но ни один из них, похоже, не затрагивает вопрос о включении легенды.

У меня есть воспроизводимый пример с использованием набора данных алмазов из ggplot.

Данные

library(ggplot2) library(gtable) library(grid) library(data.table) library(scales) grid.newpage() dt.diamonds <- as.data.table(diamonds) d1 <- dt.diamonds[,list(revenue = sum(price), stones = length(price)), by=clarity] setkey(d1, clarity) 

Графики

 p1 <- ggplot(d1, aes(x=clarity,y=revenue, fill="#4B92DB")) + geom_bar(stat="identity") + labs(x="clarity", y="revenue") + scale_fill_identity(name="", guide="legend", labels=c("Revenue")) + scale_y_continuous(labels=dollar, expand=c(0,0)) + theme(axis.text.x = element_text(angle = 90, hjust = 1), axis.text.y = element_text(colour="#4B92DB"), legend.position="bottom") p2 <- ggplot(d1, aes(x=clarity, y=stones, colour="red")) + geom_point(size=6) + labs(x="", y="number of stones") + expand_limits(y=0) + scale_y_continuous(labels=comma, expand=c(0,0)) + scale_colour_manual(name = '',values =c("red","green"), labels = c("Number of Stones"))+ theme(axis.text.y = element_text(colour = "red")) + theme(panel.background = element_rect(fill = NA), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_rect(fill=NA,colour="grey50"), legend.position="bottom") # extract gtable g1 <- ggplot_gtable(ggplot_build(p1)) g2 <- ggplot_gtable(ggplot_build(p2)) pp <- c(subset(g1$layout, name == "panel", se = t:r)) g <- gtable_add_grob(g1, g2$grobs[[which(g2$layout$name == "panel")]], pp$t, pp$l, pp$b, pp$l) # axis tweaks ia <- which(g2$layout$name == "axis-l") ga <- g2$grobs[[ia]] ax <- ga$children[[2]] ax$widths <- rev(ax$widths) ax$grobs <- rev(ax$grobs) ax$grobs[[1]]$x <- ax$grobs[[1]]$x - unit(1, "npc") + unit(0.15, "cm") g <- gtable_add_cols(g, g2$widths[g2$layout[ia, ]$l], length(g$widths) - 1) g <- gtable_add_grob(g, ax, pp$t, length(g$widths) - 1, pp$b) # draw it grid.draw(g) 

ВОПРОС: Есть ли у кого-нибудь советы о том, как получить вторую часть легенды?

Ниже приведены графики, созданные в порядке p1, p2, в сочетании p1 & p2, вы заметите, что легенда для p2 не отображается в комбинированной диаграмме.

p1

p1

p2

p2

комбинированный p1 & p2

комбинированный p1 & p2

Подобно технике, которую вы используете выше, вы можете извлечь легенды, связать их, а затем переписать легенду сюжета с ними.

Итак, начиная с # draw it в своем коде

 # extract legend leg1 <- g1$grobs[[which(g1$layout$name == "guide-box")]] leg2 <- g2$grobs[[which(g2$layout$name == "guide-box")]] g$grobs[[which(g$layout$name == "guide-box")]] <- gtable:::cbind_gtable(leg1, leg2, "first") grid.draw(g) 

введите описание изображения здесь

  • Динамическое обновление значений диаграммы диаграмм
  • Как я могу прикрепить изображение или значок на краю линейки Google
  • Графики для Android
  • Google легенды диаграммы - Перекрытие текста
  • coca pod Диаграмма не появляется (Swift4)
  • JFreeChart масштабирование ящиков с несколькими категориями
  • Как вы строите гистограммы в gnuplot?
  • Interesting Posts

    Получить SSID при подключении WIFI

    Android Set Multiple Alarms

    добавьте функцию onclick в кнопку отправки

    Как я могу исправить «ПРЕДУПРЕЖДЕНИЕ: сообщение не защищено целостностью» при использовании симметричного шифрования GPG?

    Определите, является ли Office 32-битным или 64-битным через реестр

    Разделение ноутбука с 4 основными разделами

    Получить путь к файловому каталогу из пути к файлу

    Замена команды: обратные ссылки или знак доллара / парад заключены?

    Как создать глобальные переменные, доступные во всех представлениях, используя Express / Node.JS?

    Google постоянно обновляется в Chrome

    Экранные сеансы GNU мертвы после перезагрузки компьютера – как это исправить?

    Как использовать команды «-s», «-t» и «-c» команды tr в Unix?

    UITableView – лучшее редактирование посредством привязки?

    Как Google смог это сделать? Slide ActionBar в приложении для Android

    массивы нулевой длины

    Давайте будем гением компьютера.