#r #ggplot2
#r #ggplot2
Вопрос:
Я пытаюсь построить линейный график (точки данных между 0 и 2,5, с интервалом 0,5). Я хочу построить несколько столбиков на одном графике на правой оси (между 0 и 60 с интервалом 10). Я допускаю некоторую ошибку в своем коде, так что полосы отображаются на левой оси.
Вот несколько примеров данных и кода:
Month <- c("J","F","M","A")
Line <- c(2.5,2,0.5,3.4)
Bar <- c(30,33,21,40)
df <- data.frame(Month,Line,Bar)
ggplot(df, aes(x=Month))
geom_line(aes(y = Line,group = 1))
geom_col(aes(y=Bar))
scale_y_continuous("Line",
sec.axis = sec_axis(trans= ~. /50, name = "Bar"))
Заранее спасибо.
Ответ №1:
Попробуйте этот подход с коэффициентом масштабирования. Лучше, если вы работаете с коэффициентом масштабирования между вашими переменными, а затем используете его для второй оси y. Я внес небольшие изменения в ваш код:
library(tidyverse)
#Data
Month <- c("J","F","M","A")
Line <- c(2.5,2,0.5,3.4)
Bar <- c(30,33,21,40)
df <- data.frame(Month,Line,Bar)
#Scale factor
sfactor <- max(df$Line)/max(df$Bar)
#Plot
ggplot(df, aes(x=Month))
geom_line(aes(y = Line,group = 1))
geom_col(aes(y=Bar*sfactor))
scale_y_continuous("Line",
sec.axis = sec_axis(trans= ~. /sfactor, name = "Bar"))
Вывод:
Комментарии:
1. Идеально! Еще один запрос: как пометить столбики? Добавление > geom_text(aes(label= Bar)), похоже, не работает. Большое спасибо
2. @wellokay затем я бы посоветовал вам добавить метки после каждой геометрии вот так:
geom_col(aes(y=Bar*sfactor)) geom_text(aes(y=Bar*sfactor,label=Bar))
!