垂直 vistime 时间轴和重叠 geom_text 标签

Vertical vistime timeline and overlapping geom_text labels

我正在尝试使用 vistime 及其 ggplot 绘图选项绘制垂直时间线。我的主要目的是更好地将它与文本并排集成。这是代码:

library("vistime")
library("plotly")
data <- read.csv("../../data/programming.csv")
g <- gg_vistime(data, col.event="Item", col.start="Start.Date", col.end="End.Date", col.group="Group")
g + theme(axis.text.x = element_text(angle=90, color='blue4',size=14) )+coord_flip()

如您所见,在我执行 coord_flip 时,标签相互交叉。我想让标签垂直。这是绘制它们的代码:

https://github.com/shosaco/vistime/blob/372da36791cbdb7ad7d6841ed991e55b36f77e06/R/plot_ggplot.R#L83-L91

所以这意味着它是一个 geom_text 句子。完成后geom_text-drawn文本有什么方法可以改变的方向吗?我可以使用一些 theme 命令来做到这一点吗?除此之外,有什么方法可以使用 vistime?

更改标签的位置

您可以解构任何 ggplot2 visualization with (surprisingly) ggplot_build(实际上,它所做的是创建可以使用普通香草 plot 呈现的元素)。

data <- read.csv("data/programming.csv")


g <- gg_vistime(data, col.event="Item", col.start="Start.Date", col.end="End.Date", col.group="Group") + theme(axis.text.x = element_text(angle=90, color='blue4',size=14) )+coord_flip()

g.d <- ggplot_build(g)

g.d$data[[4]]$angle <- 90

rebuilt <- ggplot_gtable(g.d)

png(filename="img/timeline.png", width=240, height=960)
plot(rebuilt)
dev.off()

这会创建一个包含不同绘图元素的数据框,包括 g.d$data,它在第 4 个元素中呈现时有效地包含数据及其属性。 g.d$data[[4]]$angle 包含已渲染的所有 geom_text 元素的角度。所以一旦你得到它,这只是一个单独或集体改变它到你想要的东西的问题。您需要使用 ggplot_gtable 重建图,然后使用核心 plot 命令以您想要的任何方式绘制和渲染它,在本例中为 png.

无论如何,ggplot_build 允许您自省数据结构和使用 ggplot 创建的图表的不同部分,在 [=31] 之后更改其任何层、元数据或部分=] 它们已被创建。在我们的例子中,它产生 the intended effect