【问题标题】:R: Horizontal bar chart (simple gantt chart)R:水平条形图(简单甘特图)
【发布时间】:2020-10-13 19:54:20
【问题描述】:

我有一个如下所示的数据框:

structure(list(time = 1:36, X2018 = c("1", "1", "1", "1", 
"1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
"0", "0", "0", "0", "0", "0"), X2019 = c("0", "0", "1", "1", 
"1", "1", "1", "1", "1", "1", "0", "0", "1", "0", "0", "0", "0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
"0", "0", "0", "0", "0", "0"), X2020 = c("1", "1", "1", "1", 
"1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
"0", "0", "0", "0", "0", "0")), row.names = c(NA, -36L), class = "data.frame")

“时间”列是一年中的十年数(= 10 天)。 “X2018”列包含 2018 年的数据条目。数据条目是 1(有数据)或 0(没有数据/NA)。

我想创建一个看起来像这样的图,显示具有数据条目的不同年份的几十年:

我尝试使用 ggplot2 生成绘图。我认为条形图不是这里的方法,因为它们可视化从 0 开始的总计数。

我查看了甘特图,但我觉得这太复杂了,我想知道是否有人可以给我一个提示,告诉我如何解决这个问题或者我可以查看哪些包。

【问题讨论】:

  • 有一些 R 包可以帮助生成甘特图。我使用的是vistime。它们都需要特定的输入数据结构,但它们很容易安排。

标签: r ggplot2 bar-chart


【解决方案1】:

从宽到长重塑数据,然后使用 geom_tiles:

library(ggplot2)
library(data.table)

setDT(dt)

#reshape
plotDat <- melt(df1, id.vars = "time", variable.name = "year")

#pretty xlimits
xlimits <- range(plotDat$time)

# plot tiles
ggplot(plotDat[ value == 1, ], aes(time, year)) +
  geom_tile(fill = "lightblue") +
  scale_x_continuous(limits = xlimits, breaks = seq(xlimits[1], xlimits[2]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2017-09-30
    相关资源
    最近更新 更多