gpt4 book ai didi

r - 具有时间点和格式日期的时间线

转载 作者:行者123 更新时间:2023-12-04 09:07:48 25 4
gpt4 key购买 nike

我是 R 和 ggplot2 的新手,我想知道如何使用 R 在给定时间生成时间线绘图点?我的日期也有问题。 (我不确定我是否应该将其作为两个问题发布,但在这里)。

我有一个数据框,其中年和月作为 YYYYMM 格式的字符、两个人的名字和发生的事件。

像这样:

> data

YearMonth Person1 Person2 Event
200606 Alice Bob event1
200606 Bob Alice event2
200608 Alice Bob event3
200701 Alice Bob event3
200703 Bob Alice event2
200605 Alice Bob event4

日期最初是整数,我使用 as.character() 将其转换为字符.我正在尝试将其转换为格式化的日期。
我用过 as.Date()并尝试了不同的方式来格式化日期。我最接近的是 data$YearMonth <- as.Date(data$YearMonth,"%Y") ,但这分别为所有 2006xx 和 2007xx 行生成了“2006-12-20”和“2007-12-20”。有什么办法可以让我得到类似“YYYY-MM”或“YYYY/MM”的信息吗?

我也试过 data$YearMonth <- strptime(data$YarMonth, "%Y%m") ,但这给了我 <NA>值。

但我的主要问题是时间线。

下图是我想要的那种格式:

http://www.vertex42.com/ExcelArticles/Images/timeline/Timeline-for-Benjamin-Franklin.gif

但是 x 轴显示了月份和年份(如 2006-06、2006-07 … 2007-06),而轴上的线标有事件、Person1 和 Person2。

我在 ?timeline 查看了“时间线”包但是我拥有的数据框没有时间段(开始和结束日期)的数据。我只有一个时间点(年月)。

我也在 Draw a chronological timeline with ggplot2 尝试了这个例子使用 ggplot2。但是我没有 y 轴的错位,我希望事件线离开 x 轴。

注意:这是一个非常简化的示例,因为我在 2006 年 6 月至 2007 年 6 月的时间段内有大约一千行。甚至可以用这么多数据制作时间线吗?

任何帮助深表感谢。谢谢你的时间!

最佳答案

这是另一个尝试:

df$YM <- as.Date(paste0("01",df$YearMonth), format="%d%Y%m")
rangeYM <- range(df$YM)

plot(NA,ylim=c(-1,1),xlim=rangeYM,ann=FALSE,axes=FALSE)
abline(h=0,lwd=2,col="#5B7FA3")

ypts <- rep_len(c(-1,1), length.out=nrow(df))
txtpts <- rep_len(c(1,3), length.out=nrow(df))
segments(df$YM,0,df$YM,ypts,col="gray80")

axis.Date(
1,
at=seq.Date(rangeYM[1],rangeYM[2],by="month"),
format="%Y-%m",
cex.axis=0.6,
pos=0,
lwd=0,
lwd.tick=2,
col="#5B7FA3",
font=2
)

points(df$YM,y=ypts, pch="-", cex=1.5, col="#5B7FA3")
par(xpd=NA)
text(
df$YM, y=ypts,
labels=paste(df$Person1,df$Person2,df$Event,sep="\n"), cex=0.7, pos=txtpts
)
par(xpd=FALSE)

enter image description here

关于r - 具有时间点和格式日期的时间线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20695311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com