如何在 r 汽车包中的后续情节的完整性中以适当的格式在 x 轴上绘制日期?
Posted
技术标签:
【中文标题】如何在 r 汽车包中的后续情节的完整性中以适当的格式在 x 轴上绘制日期?【英文标题】:How to plot date in a proper format in x-axis in the completeness of the follow-up plot in r car package? 【发布时间】:2022-01-08 21:08:00 【问题描述】:我正在尝试在r
中绘制后续图的完整性,但是我在以正确的格式绘制日期时遇到了 x 轴的问题,尽管我使用 @ 将其以正确的格式放入数据集中987654325@
我的代码和示例数据集:
Date.Interventon = as.POSIXct('1/27/2017', format='%m/%d/%Y') + 1:40*60
Status<- c ("Alive","Dead","Dead","Dead","Alive","Alive","Dead","Dead","Alive","Dead")
OS.years <-c(11,13,14,13,13,10,13,14,10,11)
data.fu.lorenzoo= data.frame(Date.Interventon,Status, OS.years)
str(Date.Interventon )
library(car)
scatterplot( OS.years ~ Date.Interventon | Status, data=data.fu.lorenzoo,
xlab = "Date of procedure",
ylab = "Follow-up (years)",
smooth = F, # Removes smooth estimate
regLine = T) # Removes linear estimate
结果图如下所示。 我做了很多trials,但我仍在苦苦挣扎。 任何建议将不胜感激。
【问题讨论】:
【参考方案1】:我不确定它是否是您需要的,但从您的数据集中,我假设您希望在 x 轴上查看分钟,因为天和小时彼此相似。
使用 lubridate
包中的 minute
,您可以以适当的方式更改 x 轴。
car::scatterplot( OS.years ~ minute( Date.Interventon) | Status, data=data.fu.lorenzoo,
xlab = "Date of procedure",
ylab = "Follow-up (years)",
smooth = F, # Removes smooth estimate
regLine = T) # Removes linear estimate
通过使用不同的包,比如ggplot2
,我们可以产生类似的情节。
在继续之前,我更新了 Data.Inverventon 以代表不同的年份。然后使用 zoo
包中的 as.yearmon
函数创建 yearmonth 变量。
Date.Interventon = as.POSIXct('1/27/2017', format='%m/%d/%Y') + 1:40*60000000
Status<- c ("Alive","Dead","Dead","Dead","Alive","Alive","Dead","Dead","Alive","Dead")
OS.years <-c(11,13,14,13,13,10,13,14,10,11)
data.fu.lorenzoo= data.frame(Date.Interventon,Status, OS.years)
data.fu.lorenzoo$yearmonth = zoo::as.yearmon(data.fu.lorenzoo$Date.Interventon)
然后你可以绘制类似的图表
ggplot(data.fu.lorenzoo, aes(x = yearmonth, y = OS.years, color = Status)) +
geom_point() + geom_smooth(method = lm, se = FALSE) +
labs( x = "Date of procedure", y = "Follow-up (years)") +
theme_minimal()
输出是这样的,
【讨论】:
感谢您的宝贵意见。赞成。是否可以同时绘制月份和年份而不是分钟。问候。如果可能的话,请尝试支持我的问题。 嗨 Mohamed,还有另一个功能是as.yearmon
来自 zoo
包。您可以更改日期的格式,例如 2020 年 1 月,但是,当您输入 x 轴时,我们看不到月份。我不知道为什么,但它只显示年份。也许它会帮助你。如果我找到解决方案,我会更新我的答案。
非常感谢。赞成。我用过它,现在很有意义。 car::scatterplot( OS.years ~ zoo::as.yearmon ( Date.Interventon) | Status, data=data.fu.lorenzoo, xlab = "Date of procedure", ylab = "Follow-up (years)", smooth = F, regLine = T)
我也用ggplot复现了图,也许对你更好
非常感谢。为您的 cmets 投票。【参考方案2】:
可能不是最好的解决方案,您需要单独格式化轴。
Date.Interventon = as.POSIXct("1/27/2017", format="%m/%d/%y") + 1:40*60
Status<- c ("Alive","Dead","Dead","Dead","Alive","Alive","Dead","Dead","Alive","Dead")
OS.years <-c(11,13,14,13,13,10,13,14,10,11)
data.fu.lorenzoo= data.frame(Date.Interventon, Status, OS.years)
library(car)
scatterplot( OS.years ~ Date.Interventon| Status, data=data.fu.lorenzoo,
xlab = "Date of procedure",
ylab = "Follow-up (years)",
smooth = F, # Removes smooth estimate
regLine = T,
axes=F) # Removes linear estimate
axis(2)
axis(1, Date.Interventon, format( as.POSIXct("1/27/2017", format="%m/%d/%y") + 1:40*60, cex.axis = .7))
【讨论】:
感谢您的宝贵输出。赞成。是否可以只放置年和月而没有日、小时和分钟,并垂直对齐这些日期,以便我们可以放置许多日期。感谢您的宝贵意见。如果可能的话,请尝试支持我的问题。以上是关于如何在 r 汽车包中的后续情节的完整性中以适当的格式在 x 轴上绘制日期?的主要内容,如果未能解决你的问题,请参考以下文章