將示例資料框視為:
df <- data.frame(Names = c("A", "A", "B", "B", "C", "C"),
Start = structure(c(18659, NA, 19024, NA, 19297, NA), class = "Date"),
End = structure(c(NA, 21062, NA, 20970, NA, 22552), class = "Date"),
Dates = structure(c(18659, 21062, 19024, 20970, 19297, 22552), class = "Date"))
我想Names在 y 軸和Datesx 軸上創建一個時間線圖。Start然后我想在和End點之間繪制水平線:
ggplot(df, aes(x = Dates, y = Names)) geom_point(size = 1)
theme_classic() guides(color = FALSE) labs(title = "title")
theme(axis.line.y = element_blank(), axis.ticks = element_blank(),
axis.title = element_blank(), axis.text.y = element_text(size = 12, color = "black"),
plot.title = element_text(size = 20, hjust = 0.5, face = "bold",
margin = margin(c(0.3,0,0.5,0), unit = "in")),
axis.text.x = element_text(size = 12, color = "black",
margin = margin(c(0.27,0,0,0), unit = "in")),
axis.line.x = element_line(size = 0.9, color = "navy"))
scale_x_date(date_break = "5 months", date_labels = "%b")
geom_segment(aes(x = Start, xend = End,
y = Names, yend = Names), size = 0.6, color = "navy")
但我無法讓水平線段顯示在圖上:

期望的輸出是:

uj5u.com熱心網友回復:
你正在尋找geom_linerange. 此外,您的資料框構造不理想,您應該填寫 NA。
df <- data.frame(Names = c("A", "A", "B", "B", "C", "C"),
Start = structure(c(18659, NA, 19024, NA, 19297, NA), class = "Date"),
End = structure(c(NA, 21062, NA, 20970, NA, 22552), class = "Date"),
Dates = structure(c(18659, 21062, 19024, 20970, 19297, 22552), class = "Date")) %>%
fill(Start) %>%
fill(End, .direction = "up")
ggplot(df, aes(x = Dates, y = Names)) geom_point(size = 1)
geom_linerange(aes(xmin = Start, xmax = End))
scale_x_date(date_break = "5 months", date_labels = "%b")

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/462733.html
