How to overlap bars using ggplot2? just like 'add=TRUE' in barplot - r
As we can see in this graph (full graph here):
There are two variables, the lighter orange bar shows the total value and another one is showing the partial variable. How can I organize those two bars together? (not 'stack', because I want both bars to start from the bottom)
ggplot(bad_drivers2, aes(State, nums)) +
geom_bar(stat = "identity", fill= "royalblue") +
coord_flip()
ggplot(bad_drivers2, aes(State, not_distracted_num)) +
geom_bar(stat = "identity", fill= "blue") +
coord_flip()
Related
ggplot doesn't display the colors in the bar graph
My bar graph below doesn't show the colors in the bars. ggplot(top5_energyProducersMod, aes(year, ggwt_hours), fill = year) + geom_bar(stat = "identity", position = "dodge") + facet_wrap(~country_name) I'm using the R studio desktop version
The fill color goes with the aesthetics: ggplot(top5_energyProducersMod, aes(year, ggwt_hours,fill = year)) + geom_bar(stat = "identity", position = "dodge") + facet_wrap(~country_name)
Custom different sizes of labels in a stacked bar chart (ggplot2)
I want to customize different sizes for the labels inside a stacked barchart using ggplot2. For example, a size 4 in the green bar, a size 3 in the light green, a size 2 in the yellow and so on. Below there is a link with an image of the plot. I cant figure out how to do it. This is the code ggplot(data, aes(x = as.factor(id), y=value, fill = cat, label = value)) + geom_bar(stat = "identity", alpha=0.5) + geom_text(size = 2.5, position = position_stack(vjust = 0.7)) + scale_fill_manual(values=c("#1E8E6B", "#6FBC84", "#FEEF51", "#EF6541", "#E81329")) I want for example
As #teunbrand mentioned, put your size= into aes() so that ggplot2 uses that as an aesthetic mapped to cat, and then use scale_size_manual() to set the sizes just like you already have done with the fill=. ggplot(data, aes(x = as.factor(id), y=value, fill = cat, label = value)) + geom_bar(stat = "identity", alpha=0.5) + geom_text(aes(size = cat), position = position_stack(vjust = 0.7)) + scale_fill_manual(values=c("#1E8E6B", "#6FBC84", "#FEEF51", "#EF6541", "#E81329")) + scale_size_manual(values=c(4,3,2.5,2,1.5)) You can change the sizes however you wish or set values with a seq() function.
Assigning continuous fill color to geom_bar
I am generating a bar chart from data that is in the following format: count | month ------|----------- 1000 | 2012-01-01 10000 | 2012-02-01 I am trying to assign continuous colors to my bar chart. I want a gradient of colors to be used as the fill color of the bars. I am trying this: ggplot(userData, aes(month, count)) + geom_bar(stat = "identity") + scale_x_date() + # scale_fill_gradient(low="blue", high="red") + scale_fill_continuous(low="blue", high="red", limits=c(0,6500000)) + labs(x= "Time", y="Count") However, I am not getting the desired result and the bars in the chart still stays gray as can be seen below: I have tried with both scale_fill_continuous, and scale_fill_gradient, but without success. I am not sure exactly what I am missing here.
You haven't assigned the fill aesthetic to anything: aes(month, count, fill = count) should do the trick. Complete code: ggplot(userData, aes(month, count, fill = count)) + geom_bar(stat = "identity") + scale_x_date() + scale_fill_continuous(low="blue", high="red") + labs(x= "Time", y="Count") (limits are probably useless now, but feel free to add them back)
Changing stacked chart to staggered in ggplot2
I'm struggling to change a stacked chart into a staggered one in ggplot2. So far this is what I've created Attempt 1. I'm trying to show how much of three different types of medicines are necessary to kill 16 different types of bacteria. I feel like the graph would be a lot clearer if I could put these bars right next to each other for each bacteria type instead of stacked. This is the code that I've used so far. I've tried using position dodge but I get no results. p2b <- ggplot() + geom_bar(data=p2, aes(x=p2$bacteria, y=p2$penicillin, fill='transparent'), position="dodge", colour = "blue", fill="transparent", stat = "identity") + geom_bar(data=p2, aes(x=p2$bacteria, y=p2$streptomycin, position="dodge"), colour = "red", fill = "transparent", stat = "identity") + geom_bar(data=p2, aes(x=p2$bacteria, y=p2$neomycin, position="dodge"), colour = "green", fill = "transparent", stat = "identity") + scale_y_log10() + theme(axis.text.x = element_text(angle = 90, hjust = 1))
width and gap of geom_bar (ggplot2)
I want to make bar plots using ggplot. After plotting when i do export > copy to clipboard and then try to adjust the size of my plot, the gaps between the bars change as I change the size of the plot (the gaps between the bars change its position). I hope I am clear on this. I have used the following code: ggplot(df, aes(Day, Mean)) + geom_histogram(stat = "identity", position = "stack") + theme(axis.text = element_text(size=12, colour = 'black')) + ylim(0, 50) + xlim(0, 365) I have tried using both geom_bar and geom_histogram, both seems to give the same plot. And the gaps between the bars changes as I adjust the size. P.S. I have to plot 365 bars, each one representing one day of a year. Feel free to edit the question, if you think that i am unclear. This is the plot produced with the code. You can clearly see the uneven gaps in between. here is the data: data Edit data df <- data.frame(Mean=c(0,0,0,0,0,0,0.027272727,0,0.409090909,0.009090909,0,0,0,0,0,0.054545455,0.036363636,0.118181818,0.327272727,0.254545455,0,0,1.609090909,1.636363636,0,0.181818182,1.2,0.090909091,0.409090909,0.418181818,1.018181818,0.409090909,0.127272727,0.072727273,0.054545455,1.2,0.127272727,0.290909091,0,0.518181818,0.254545455,0.454545455,1.545454545,1.1,1.763636364,0,0.136363636,0.7,0.445454545,1.954545455,0.018181818,0,2.618181818,0,0,3.518181818,7.645454545,2.709090909,5.909090909,0.9,1.109090909,2.354545455,0.418181818,0.272727273,0,0,1.636363636,0,2.927272727,0.472727273,1,0,2.109090909,0.490909091,0.827272727,2.663636364,4.8,0.554545455,6.3,3.936363636,2.218181818,0.045454545,0,7.109090909,0,3.745454545,3.009090909,8.818181818,6,21.99090909,2.845454545,3.918181818,1.4,12.32727273,1.136363636,4.345454545,1.018181818,2.927272727,12.53636364,2.618181818,0.709090909,5.645454545,5.345454545,3.181818182,2.681818182,13.96363636,3.990909091,9.9,12.54545455,8.545454545,11.43636364,6.281818182,1.836363636,11.4,4.827272727,16.14545455,3.581818182,1.972727273,3.4,4.472727273,18.86363636,5,11.4,5.790909091,3.745454545,1.072727273,2.581818182,5.063636364,12.42727273,9.2,10.85454545,15.18181818,5.963636364,22.53636364,5.027272727,7,4.572727273,7.190909091,15.42727273,7.3,23.48181818,30.87272727,19.62727273,6.463636364,16.20909091,9.509090909,5.1,8.127272727,5.890909091,11.84545455,10.14545455,4.518181818,15.23636364,22.41818182,21.62727273,7.245454545,19.56363636,33.94545455,26.98181818,9.027272727,11.28181818,20.44545455,27.52727273,23.25454545,28.77272727,20.04545455,30.68181818,28.32727273,12.38181818,13.54545455,18.17272727,12.97272727,38.14545455,20.2,14.30909091,39.44545455,34.4,34.49090909,23.32727273,29.37272727,50.68181818,23.2,16.28,35.02,49,18.86,30.96,37.83,33.01,44.31,25.51,33.76,15.05,24.8,8.99,15.72,41.31,41.47,28.12,44.22,30.63,37.35,15.72,12.86,21.89,18.02,6.32,4.73,24.16,29.12,11.58,24.25,22.69,15.7,24.36,20.05,17.19,26.71,17.84,16.53,9.3,5.11,10.97,19.95,5.65,29.88,34.95,24.14,32.09,9.85,17.49,13.72,7.97,26.21,24.9,26.45,14.1,9.52,18.64,13.43,15.17,26.61,9.84,24.9,16.42,19.58,17.58,22.96,39.61,22.83,15.49,23.64,16.71,3.96,10.17,19.04,28.42,16.64,4.95,9.73,13.45,11.67,8.02,8.71,8.31,17.65,8.41,7.19,11.94,5.15,5.54,5.21,0.88,0.96,6.18,9.46,10.24,17.29,8.95,16.51,6.31,11.4,5.05,8.28,0.26,0,6.19,1.02,0.99,0.94,1.87,0,0.21,3.32,3.33,7.82,2.65,5.21,0.49,1.59,0.05,2.25,0,0,1.09,0.42,0,0.05,0.02,0,0.18,0,0.02,0.05,0.09,0.01,1.01,0,0,2.38,0.42,0.65,0,0,0,0.4,0,0,0,0,0.18,0,0,0,0,0,0.63,0,0,0,0.1,0,0,0,0,0,1.35,0,0,0,0,0,1.62,0.2,0,0,0,1.3,0,0,0,0,0.89,4.55,0), Day=seq(1, 365, 1))
Setting the width to a small value and specifying the color gives me the desired result with gaps between all bars: ggplot(df, aes(x = Day, y = Mean)) + geom_bar(stat = "identity", width = 0.1, color = "black") + theme_bw() + theme(axis.text = element_text(size = 12)) the resulting plot: If you want no gaps, use width = 1: ggplot(df, aes(x = Day, y = Mean)) + geom_bar(stat = "identity", width = 1) + theme_bw(base_size = 12) the resulting plot:
Same problem but with side-by-side bars will be resolved using the width within the position element: geom_bar(width=0.1, position = position_dodge(width=0.2))