[问题] plot时间关系图的时间轴间距

楼主: Retangle   2018-12-15 23:01:05
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
我在画一笔资料和时间的关系,但是资料的时间尺度是5天
所以横座标的间隔被自动换成星期表示 (时间轴使用lubridate包产生)
想请教如何才能让他用日期表示
已经试过 yaxt="n" 然后用 axis()重设
但时间轴会变成lubridate转换时间的numeric 如1542528000、1542614400
[程式范例]:
library(readxl)
library(lubridate)
library(plotrix)
#data = read_excel("C:/Users/User/Desktop/observe.xlsx",na="NA") 原本的资料
data2=list(51,43,39,16,18,22,21,33,43,17,25,29,29,31,32) #其中一项资料
x2=seq(from=ymd_hm("2018-11-16-08-00"),to=ymd_hm("2018-11-20-20-00"),by=6*60*60)
x3=c(x2[1],x2[2],x2[3],x2[5],x2[6],x2[7],x2[9],x2[10],x2[11],x2[13],x2[14],x2[15],x2[17],x2[18],x2[19])
plot(x3,data2,type="b",xlab="时间:11/16~11/20每日0800、1400、2000",
ylab="pm10 (μg/m^3)",yaxs="i",yaxt="n",ylim=c(15,55),col="blue")
axis(2,at=seq(15,55,5))
[环境叙述]:
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=Japanese_Japan.932 LC_CTYPE=Japanese_Japan.932
LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C
[5] LC_TIME=Japanese_Japan.932
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lubridate_1.7.4 readxl_1.1.0
loaded via a namespace (and not attached):
[1] compiler_3.5.1 magrittr_1.5 tools_3.5.1 pillar_1.3.0
tibble_1.4.2 crayon_1.3.4 Rcpp_1.0.0
[8] cellranger_1.1.0 stringi_1.1.7 stringr_1.3.1 rlang_0.2.2
[关键字]:
lubridate plot 时间轴间隔 星期改回日期
楼主: Retangle   2018-12-15 23:14:00
作者: andrew43 (讨厌有好心推文后删文者)   2018-12-16 16:57:00
先提供一小段原始资料,特别是日期被记录的方式。
作者: cywhale (cywhale)   2018-12-16 17:14:00
不太确定你使用的函数和程式码不好给建议,但若重给axis比如原本时间太长以至于时间轴时间被自动改掉 你可以自给tx=seq.Date(ymd('2018-01-01'),ymd('2018-12-31'),by="month"); axis(1,at=tx,labels=tx) 类似这样重新给label
作者: andrew43 (讨厌有好心推文后删文者)   2018-12-17 11:33:00
强制 axis.POSIXct(1, x = x3, format = "%F")记得plot()中加xaxt="n"使x-axis先不画刻度format的用法请看 ?strptime如果刻度位置有正负偏,可注意时区。

Links booklink

Contact Us: admin [ a t ] ucptt.com