I am having a really hard time recreating an excel example with ggplot2. I have tried numerous examples but for some reason I cannot reach my desired result. Can someone please have a look at my example?
df <- structure(list(OccuranceCT = c(4825, 9063, 10635, 8733, 5594,
2850, 1182, 376, 135, 30, 11), TimesReshop = structure(1:11, .Label = c("1x",
"2x", "3x", "4x", "5x", "6x", "7x", "8x", "9x", "10x", "11x"), class = "factor"),
AverageRepair_HrsPerCar = c(7.48951898445596, 6.50803925852367,
5.92154446638458, 5.5703551356922, 5.38877037897748, 5.03508435087719,
4.92951776649746, 4.83878377659575, 4.67829259259259, 4.14746333333333,
3.54090909090909)), .Names = c("OccuranceCT", "TimesReshop",
"AverageRepair_HrsPerCar"), row.names = c(NA, 11L), class = "data.frame")
My plot so far:
Plot <- ggplot(df, aes(x=TimesReshop, y=OccuranceCT)) +
geom_bar(stat = "identity", color="red", fill="#C00000") +
labs(x = "Car Count", y = "Average Repair Per Hour") +
geom_text(aes(label=OccuranceCT), fontface="bold", vjust=1.4, color="black", size=4) +
theme_minimal()
Plot
This is what I got so far:
And what I am trying to achieve is:
I would be grateful to learn how to add the secondary axis and combine a bar plot with a line plot.
ggplot2
supports dual axis (for good or for worse), where the second axis is a linear transformation of the main axis.
We can work it out for this case:
library(ggplot2)
ggplot(df, aes(x = TimesReshop)) +
geom_col(aes( y = OccuranceCT, fill="redfill")) +
geom_text(aes(y = OccuranceCT, label = OccuranceCT), fontface = "bold", vjust = 1.4, color = "black", size = 4) +
geom_line(aes(y = AverageRepair_HrsPerCar * 1500, group = 1, color = 'blackline')) +
geom_text(aes(y = AverageRepair_HrsPerCar * 1500, label = round(AverageRepair_HrsPerCar, 2)), vjust = 1.4, color = "black", size = 3) +
scale_y_continuous(sec.axis = sec_axis(trans = ~ . / 1500)) +
scale_fill_manual('', labels = 'Occurance', values = "#C00000") +
scale_color_manual('', labels = 'Time Reshop', values = 'black') +
theme_minimal()