我有一個類似于以下的資料框:
> library(lubridate)
> df <- data.frame(name = c("george", "sara", "sam", "bill"),
start_date = mdy(c("January 1, 2022", "January 2, 2022", "January 5, 2022", "January 6, 2022")),
end_date = mdy(c("January 3, 2022", "January 4, 2022", "January 6, 2022", "January 8, 2022")),
group = c(1,1,2,2))
> df <- df %>%
mutate(date_range = interval(start_date,
end_date))
> df
name start_date end_date group date_range
1 george 2022-01-01 2022-01-03 1 2022-01-01 UTC--2022-01-03 UTC
2 sara 2022-01-02 2022-01-04 1 2022-01-02 UTC--2022-01-04 UTC
3 sam 2022-01-05 2022-01-06 2 2022-01-05 UTC--2022-01-06 UTC
4 bill 2022-01-06 2022-01-08 2 2022-01-06 UTC--2022-01-08 UTC
如果可能的話,我想使用 ggplot 創建兩個圖:
我想顯示每個人的日期范圍的第一個圖。向您展示我的意思更容易,請參見照片。

第二個圖我想平均每個組的范圍并顯示一個箱線圖或類似的圖來顯示每個組的日期分布。見照片。

有什么想法嗎?我對此很陌生,因此畫出了我想要的東西,我希望它對您有所幫助和清晰。
uj5u.com熱心網友回復:
當談到第一個情節時,Allan 是完全正確的geom_segment,我只是想補充一點,實際上在ggalt包中確實有一個 geom 可以做到這一點。
它被稱為啞鈴圖,如下所示:

這是我用來創建它的代碼:
library(ggalt)
df %>%
ggplot(
aes(
x = start_date,
xend = end_date,
y = name
)
)
geom_dumbbell(
colour = "#a3c4dc",
colour_xend = "#0e668b",
size = 4
)
然后,您可以使用所有正常功能使其看起來更漂亮。更多資訊geom_dumbbell可以通過幫助檔案或這篇博文找到
uj5u.com熱心網友回復:
您可以使用geom_segment
library(ggplot2)
ggplot(df, aes(x = start_date, y = name, colour = name))
geom_segment(aes(xend = end_date, yend = name), colour = "black")
geom_point(size = 3)
geom_point(aes(x = end_date), size = 3)
theme_bw()
theme(legend.position = "none")

第二個需要一些資料重塑,正如 akrun 指出的那樣:
library(dplyr)
library(tidyr)
df %>%
pivot_longer(2:3, names_to = "type", values_to = "date") %>%
ggplot(aes(date, factor(group)))
geom_boxplot(aes(colour = factor(group)))
theme_bw()
theme(legend.position = "none")

由reprex 包于 2022-01-22 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/420820.html
標籤:
上一篇:如何按類別包裝圖表,同時在R中保持與ggplot相同的條形寬度?
下一篇:設定箱線圖中方框的顏色
