Yesterday I asked a question about plotting hourly data with ggplot2 (R ggplot2 ploting hourly data) and found a solution thanks to the answers received. Then I succedeed ploting temperature data with geom_line().
I tried to apply the same to geom_bar to illustrate precipitation data with bars. But I can't manage to set the y axis limits. I've tried different things but can't find the exact point.
My data looks like:
FECHA H_SOLAR;DIR_M;VEL_M;TEMP_M;HR;PRECIP
01/06/14 00:50:00;314.3;1.9;14.1;68.0;-99.9
01/06/14 01:50:00;322.0;1.6;13.3;68.9;-99.9
01/06/14 02:50:00;303.5;2.1;12.3;70.9;-99.9
01/06/14 03:50:00;302.4;1.6;11.6;73.1;-99.9
01/06/14 04:50:00;306.5;1.2;10.9;76.4;-99.9
01/06/14 05:50:00;317.1;0.8;12.6;71.5;-99.9
01/06/14 06:50:00;341.8;0.0;17.1;58.8;-99.9
01/06/14 07:50:00;264.6;1.2;21.8;44.9;-99.9
01/06/14 08:50:00;253.8;2.9;24.7;32.2;-99.9
01/06/14 09:50:00;254.6;3.7;26.7;27.7;10
01/06/14 10:50:00;250.7;4.3;28.3;24.9;12
01/06/14 11:50:00;248.5;5.3;29.1;22.6;-99.9
01/06/14 12:50:00;242.8;4.7;30.3;20.4;-99.9
01/06/14 13:50:00;260.7;4.9;31.3;17.4;-99.9
01/06/14 14:50:00;251.8;5.1;31.9;17.1;-99.9
01/06/14 15:50:00;258.1;4.6;32.4;15.3;-99.9
01/06/14 16:50:00;254.3;5.7;32.4;14.0;-99.9
01/06/14 17:50:00;252.5;4.6;32.0;14.1;-99.9
01/06/14 18:50:00;257.4;3.8;31.1;14.9;20
01/06/14 19:50:00;135.8;4.2;26.0;41.2;-99.9
01/06/14 20:50:00;126.0;1.7;23.5;48.7;16
01/06/14 21:50:00;302.8;0.7;21.6;53.9;-99.9
01/06/14 22:50:00;294.2;1.1;19.3;67.4;-99.9
01/06/14 23:50:00;308.5;1.0;17.5;72.4;-99.9
and this is the code I am trying
library(ggplot2)
datos=read.csv("meteo.dat",sep=";",header=T,na.strings="-99.9")
datos$dia=as.POSIXct(datos[,1], format="%y/%m/%d %H:%M:%S")
datos$PRECIP[is.na(datos$PRECIP)]=0 # to avoid NA values
ggplot(data=datos,aes(x=dia, y=PRECIP)) + geom_bar(colour="blue",stat="identity") +
ylab("Precipitación (l)") + xlab("Hora solar") +
opts(title="Precipitacion acumulada horaria \n 2008-05-27 Burriana") +
scale_x_datetime(limits=xlim) +
scale_y_continuous(limits=c(0,50))
When setting limits for y axis like that it does not work as I expected. If I remove y axis setting I don't always get the same "automatic" limits
This is what I get when I don't set a limit to y axis. I would like to set limits so bars are greater (vertically).
Thanks in advance
EDIT: Edited to show the code that has worked for me.
Thanks Andrie, Chris and Brian
# Setting axis limits
xlim = as.POSIXct(c("2008-05-27 00:00:00", "2008-05-27 23:50:00"))
ylim = trunc(max(datos$PRECIP) + 10)
# Ploting
ggplot(data=datos,aes(x=dia, y=PRECIP)) + geom_bar(colour="blue",stat="identity",fill="blue") +
ylab("Precipitación (l)") + xlab("Hora solar") +
opts(title="Precipitacion acumulada horaria \n DIA NOMBRE") +
scale_x_datetime(limits=xlim ,format = "%H",major='hour') + scale_y_continuous(limits=c(0,ylim))
Now the point is to subset PRECIP data to find ylim. Now I'm getting the max of the whole precip data series, not the maximum of the ploted day. I have to decide what it's better, to set the same y limits for all days in the series or change axes for any day.
Thanks again
@Andrie is correct. It appears that you are missing xlim
.
Using your code above but removing scale_x_datetime
:
ggplot(data=datos,aes(x = dia, y = PRECIP)) +
geom_bar(colour = "blue",stat = "identity") +
ylab("Precipitación (l)") +
xlab("Hora solar") +
opts(title = "Precipitacion acumulada horaria \n 2008-05-27 Burriana") +
scale_y_continuous(limits = c(0,50))
I get the plot:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With