this question has answer here:
i have question on formatting x axis time.
this sample of data:
dput(x) structure(list(sample = c("bk01", "bk02", "bk03", "bk04", "bk05", "bk06", "bk07", "bk08", "bk09", "bk10", "bk11", "bk12", "bk13", "bk14", "bk15", "bk16", "bk17", "bk18", "bk19", "bk20", "bk21", "bk22", "bk23", "bk24", "bk25", "bk26", "bk27", "bk28", "bk29", "bk30", "bk31", "bk32", "bk33"), breath.d13c = c(-25.62, -27.45, -26.87, -25.21, -26.01, -24.33, -24.45, -23.73, -25.05, -26.11, -27, -26.28, -24.62, -26.96, -24.55, -24.52, -21.24, -26.18, -24.82, -26.12, -27.28, -26.5, -24.46, -22.83, -27.28, -25.55, -27.12, -24.46, -23.07, -28.35, na, -25.98, -26.64), chms = structure(c(1470047400, 1470048300, 1470048300, 1470049200, 1470050100, 1470050100, 1470040200, 1470041100, 1470040200, 1470041100, 1470065400, 1470063600, 1470063600, 1470064500, 1470061800, 1470045600, 1470045600, 1470046500, 1470047400, 1470066300, 1470060000, 1470058200, 1470057300, 1470047400, 1470042000, 1470042000, 1470041100, 1470041100, 1470040200, 1470043800, na, 1470060000, 1470039300), class = c("posixct", "posixt"), tzone = "")), class = "data.frame", row.names = c(na, -33l), .names = c("sample", "breath.d13c", "chms"))
i want use ggplot2 build graph of breath.d13c vs chms (collection time).
library(ggplot2) ggplot(x, aes(x=chms,y=breath.d13c)) + geom_point() + scale_y_continuous(name=expression(delta^13*c["breath"]*" "("\u2030")), limits=c(-30,-10), breaks=seq(-30,-10,5), labels=fmt_decimals(1)) + scale_x_datetime(name="collection time", labels = date_format("%h:00",tz="utc"), date_breaks = "1 hour") + my_theme
this code gives me . times off hour. can see checking
chms
column or using normal r plots
with code:
plot(x$chms,x$breath.d13c,cex=0.8)
the 2 plots use same data set, have no idea what's causing error on ggplot2
. i'd keep using it, though. ideas on doing wrong?
thank in advance
you need specify time zone in scale_x_datetime
.
the function date_format()
default set "utc". therefore, labels converted utc. use time zone e.g. used "europe/london" (to desired output), can following in ggplot code: labels = date_format("%h:%m", tz = "europe/london")
but firstly in order run code had define specified in code fmt_decimals
used function given @joran:
fmt_dcimals <- function(decimals=0){ # return function responpsible formatting # axis labels given number of decimals function(x) as.character(round(x,decimals)) }
so code looks this:
ggplot(x, aes(x=chms,y=breath.d13c)) + geom_point() + scale_y_continuous(name=expression(delta^13*c["breath"]*" "("\u2030")), limits=c(-30,-10), breaks=seq(-30,-10,5), labels=fmt_dcimals(1)) + scale_x_datetime(name="collection time", labels = date_format("%h:%m", tz = "europe/london"), date_breaks = "1 hour")
and output:
Comments
Post a Comment