r - 在ggplot水平条形图中格式化日期

标签 r date plot ggplot2 bar-chart

我想使用 ggplot 在 x 轴上制作一个带有日期的水平条形图。这是我的代码:

df <- data.frame(patient= c('Harry','John'), pain_date = c( as.POSIXct('13-04-2000', format = '%d-%m-%Y'), as.POSIXct('12-02-2000', format = '%d-%m-%Y') ), agony_date = c(as.POSIXct('25-05-2000', format = '%d-%m-%Y'),as.POSIXct('21-05-2000', format = '%d-%m-%Y')), death_date = c(as.POSIXct('30-06-2000', format = '%d-%m-%Y'), as.POSIXct('23-11-2000', format = '%d-%m-%Y')))
ggplot(df, aes(x=patient)) +
geom_linerange(aes(ymin=pain_date, ymax=agony_date), color="red", size=5) +
geom_linerange(aes(ymin=agony_date, ymax=death_date), color="black", size=5) +
coord_flip()

问题是如何确定从 JAN 到 DEC 的限制以及如何在每个月的第一天打勾?

我试过几种方法,例如:

scale_x_datetime(major="months")
scale_x_datetime(lim = c(as.POSIXct("01-01-2000"), as.POSIXct("31-12-2000")))

但它给了我以下错误信息:

Erreur : Invalid input: date_trans works with objects of class Date only

谢谢你的帮助

最佳答案

总结以上评论,您的代码应如下所示:

require(scales)
df[, "pain_date"] <- as.Date(df[, "pain_date"])
df[, "agony_date"] <- as.Date(df[, "agony_date"])
df[, "death_date"] <- as.Date(df[, "death_date"])

ggplot(df, aes(x=patient)) +
  geom_linerange(aes(ymin=pain_date, ymax=agony_date), color="red", size=5) +
  geom_linerange(aes(ymin=agony_date, ymax=death_date), color="black", size=5) +
  coord_flip() + scale_y_date(lim = c(as.Date("2000-01-01"), as.Date("2000-12-31")), 
                              breaks=date_breaks(width = "1 month"))

关于r - 在ggplot水平条形图中格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834269/

相关文章:

删除条形图中每个面板未使用的因素

python - NLTK离散度图尺寸

r - 添加和编辑R包的功能

r - 使用Extrafont程序包检索Windows字体后,Fonts表仍然为空

r - 如何过滤具有相同列名的数据框?

r - 我可以指定在 R 中采用的整数的某些位吗?

date - 将多个 GA 非抽样报表数据合并为一个数据集(查看)

r - 获取组内的 (t-1) 数据

date - ElasticSearch - 日期直方图结果的分页

python - Matplotlib hexbin log scale colorbar 刻度标签作为指数