我對在 R 中使用 ggplot 進行資料可視化相當陌生,我想了解以下資料框是否df需要重組,以便只有一個指標Spend來創建面積圖。對于這個面積圖,我希望 x 軸為 Days,y 軸為 Spend,并由 A 人和 B 人拆分。
df<-data.frame(Days=c(1,2,3,4,5,6,7),
PersonASpend=c(100,0,90,20,5,8,10),
PersonBSpend=c(30,20,120,20,55,20,0))
Days PersonASpend PersonBSpend
1 1 100 30
2 2 0 20
3 3 90 120
4 4 20 20
5 5 5 55
6 6 8 20
7 7 10 0
即它是否需要按如下結構進行構造,或者是否有其他方法可以做到這一點?
Days Person Spend
1 1 A 100
2 2 A 0
3 3 A 90
4 4 A 20
5 5 A 5
6 6 A 7
7 7 A 10
8 1 B 30
9 2 B 20
10 3 B 120
11 4 B 20
12 5 B 55
13 6 B 20
14 7 B 0
uj5u.com熱心網友回復:
是的,您可以使用pivot_longerfrom tidyr,它是 tidyverse 的一部分:
library(tidyverse)
df %>%
pivot_longer(-1, names_to = "Person", values_to = "Spend") %>%
ggplot(aes(Days, Spend, fill = Person))
geom_area(alpha = 0.4, position = "identity")

另一種方法是將每一列繪制為單獨的層:
df %>%
ggplot(aes(Days))
geom_area(aes(y = PersonASpend, fill = "A"), alpha = 0.4)
geom_area(aes(y = PersonBSpend, fill = "B"), alpha = 0.4)
labs(y = "Spend", fill = "Person")

使用reprex v2.0.2創建于 2022-11-13
uj5u.com熱心網友回復:
df %>%
rename(A = PersonASpend) %>%
rename(B = PersonBSpend) %>%
pivot_longer(c(A, B)
,names_to = "Person"
,values_to = "Spend") %>%
arrange(Person)
# A tibble: 14 × 3
Days Person Spend
<dbl> <chr> <dbl>
1 1 A 100
2 2 A 0
3 3 A 90
4 4 A 20
5 5 A 5
6 6 A 8
7 7 A 10
8 1 B 30
9 2 B 20
10 3 B 120
11 4 B 20
12 5 B 55
13 6 B 20
14 7 B 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/532168.html
標籤:rggplot2
上一篇:ggplot-如果我已經將構面用于其他內容,如何將標題放入框中?
下一篇:繪制未來幾年的預測
