问题描述
我正在尝试使用 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
时,标签彼此相交。我想让标签垂直。这是绘制它们的代码:
所以这意味着它是一个 geom_text
句子。有没有什么方法可以改变 geom_text 绘制的文本的方向一旦完成?我可以使用一些 theme
命令来做到这一点吗?除此之外,有什么方法可以使用 vistime
更改标签的位置吗?
解决方法
您可以使用(令人惊讶的)ggplot2
来解构任何 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 创建的图形的不同部分,更改其任何一个层、元数据或之后创建。在我们的例子中,它产生 the intended effect