我想绘制一个如下所示的时间轴,但条的宽度会根据特定变量的值(在本例中为n
)而变化。
你知道有什么方便的方法吗?
当前的时间轴是通过vistime
包绘制的,其中linewidth
参数的长度必须为1。例如,理想情况下,它将接受df$n*3
。
代码如下:
library(lubridate)
library(vistime)
df <- data.frame(debut = c(rep(2010,3), rep(2011,2), 2012),
fin = c(2011,2012,2013,2012,2013,2013),
n = c(3,1,2,6,7,5),
event = paste("n =", c(3,1,2,6,7,5), sep=" "),
color = c("#D73027", "#F46D43", "#FDAE61", "#FEE08B", "#D9EF8B", "#A6D96A"))
df$debut <- ymd(df$debut, truncated = 2L)
df$fin <- ymd(df$fin, truncated = 2L)
vistime(df, col.event="event", col.start = "debut", col.end = "fin", optimize_y = F, linewidth = 20, col.color = "color")
字符串
谢谢你帮忙!
输出:
x1c 0d1x的数据
3条答案
按热度按时间g0czyy6m1#
或多或少与@AllanCameron的答案相同,但使用他(和@teunbrand)的
geomtextpath
包通过一个geom
添加片段和标签,此外还提供了一种方便的方法来居中标签:字符串
x1c 0d1x的数据
此外,它还提供了很多选项来设置标签的样式,例如:有一个
gap
参数来“断开”标签的段:型
的
j5fpnvbx2#
这个看起来会好些。
字符串
的数据
请注意,我不需要 event 和 color 列,也没有使用额外的包。
型
tag5nh1u3#
你可以使用ggplot。只需使用
n
控制linewidth
美学来绘制线段。字符串
的数据