我想用RShiny和ggplot2创建一个非常简单的甘特图。我不想像这里那样使用软件包或预定义的甘特图。我宁愿通过绘制多条线一个高于另一个并全部并行来创建图表。这应该不是很困难,但我在图表后面的数据框方面遇到了问题。
我有一个非常简单的数据框,例如:
test_df_1 <- data.frame("x_1" = c(1,2,3),
"x_2" = c(2,4,5),
"y" = c(1,2,3),
"group" = c("A","B","C"))
对于 y = 1,线条应从 1 到 2,对于y = 2,线条应从 2 到 4,依此类推。使用这些代码行,我得到一个空图(但没有错误消息):
output$test <- renderPlot({
df_test <- data.frame(x_1=unlist(test_df_1$x_1), x_2=unlist(test_df_1$x_2),
y=unlist(test_df_1$y), group=unlist(test_df_1$group))
ggplot(data=df_test, aes(x=x_1, y=y, group=y)) +
geom_line() +
theme_bw()
})
我确信我没有将x_2"导入"到 ggplot 中。但我不知道该怎么做。
当我以略有不同的顺序尝试数据框时(我实际上不想要):
test_df_2 <- data.frame("x_1" = c(1,2,2,4,3,5),
"y" = c(1,1,2,2,3,3),
"group" = c("A","","B","","C",""))
并绘制它:
output$test <- renderPlot({
df_test <- data.frame(x_1=unlist(test_df_2$x_1),
y=unlist(test_df_2$y), group=unlist(test_df_2$group))
ggplot(data=df_test, aes(x=x_1, y=y, group=y)) +
geom_line() +
theme_bw()
})
我得到了预期的结果。
如何获得具有第一个数据框 (test_df_1) 结构的所需多线图?
ggplot(data=df_test) +
geom_linerange(aes(x = y, ymin = x_1, ymax = x_2)) +
coord_flip()+
theme_bw()
或不翻转:
ggplot(df_test, aes(x = x_1, y = y, group = group)) +
geom_segment(aes(xend = x_2, yend = y))