金. 1月 2nd, 2026

Rでは日時表記をPOSIXctクラスに変換して、日時の軸を自動で調節して作図することができる。閏年のある2月の作図もこれで自動化できる。

この図を描いたスクリプトは下記の通り。

thts <- read.table(“データファイル名.csv”, header=TRUE, sep=”,”, na.strings=”NA”, dec=”.”, strip.white=TRUE)

timeexpr <- as.POSIXct( ( thts$serialtime – 25569 ) * 86400 , origin = “1970-01-01”, tz = “GMT”)

timestt <- as.POSIXlt( timeexpr[1] )
timestt0 <- as.POSIXct(ISOdatetime(timestt$year+1900,timestt$mon+1,1,0,0,0,tz=”GMT”) , origin = “1970-01-01”, tz = “GMT”)

timeend <- as.POSIXlt( max(timeexpr) )
timeend0 <- as.POSIXct(ISOdatetime(timeend$year+1900,timeend$mon+1,1,0,0,0,tz=”GMT”) , origin = “1970-01-01”, tz = “GMT”) + 45 * 86400

timeend1 <- as.POSIXlt( timeend0 )

timeend2 <- as.POSIXct(ISOdatetime(timeend1$year+1900,timeend1$mon+1,1,0,0,0,tz=”GMT”) , origin = “1970-01-01”, tz = “GMT”)

# Excelシリアル時刻(1900年元旦が0)→POSIXct型(1970年元旦が0) (25569日差)
# tz=”GMT”は、元データから時刻をずらさない、という意味になる。こうしないと、システムのロケールを使って+9時間してしまう。元データがJSTの場合は、そのままJSTで扱うことになる。

png(“R_POSIXaxis_example.png”, pointsize = 48, width = 2400, height = 1200)

par(plt = c(0.1, 0.9, 0.15, 0.85),mgp=c(2,0.5,0), xaxs=”i”, yaxs=”i”, tck=1, xaxt=”n”)

plot(timeexpr, thts$SIRCrojo_T_C, pch=18, cex=0.2, xlim=c(timestt0, timeend2), ylim=c(-12.0, 24.0), yaxp=c(-12.0, 24.0, 6), xlab=””, ylab=expression(paste(T[SIRC], ” (“^”o”, “C)”)), main=”2013/2014 winter” )

par(xaxt = “s”,mgp=c(3.0,1.6,0))

axis.POSIXct(1,at=seq(timestt0,timeend2,”months”), format = “%Y/%m/%d\n%HJST”)

dev.off()

 

投稿者 nakais_met