[英]How to graph a ggplot + geom(line) with several qualitative variables?
我有調查類型的數據,我想用 ggplot 制作圖表。
例如,
id 1 有護照,visa1 和visa2。 所以,我想分組 o 創建一個名為文件類型的變量,所有這些都是因為我想繪制一個包含多個系列的類型線圖,該系列將是護照簽證 1 和簽證 2。 我真的不知道該怎么做。
請幫我。
id date passport visa1 visa2
1 feb.2018 x x x
5 jan.2000 na x na
6 oct.1990 x na na
6 sep.2005 na x na
7 dec.2018 na na x
8 aug.2016 x x na
看起來您的數據是寬格式的。 對於 ggplot2,您需要長格式。 以下是如何將二進制列(passport、visa1、visa2)收集到單個因子變量中: http : //www.cookbook-r.com/Manipulating_data/Converting_data_between_wide_and_long_format/
然后您需要做的就是將新變量分配給ggplot2
美學,例如colour
。 https://ggplot2.tidyverse.org/
我沒有發布代碼,因為我認為這些是整理和可視化數據的非常基本的知識,並且通過學習適當的教程可以更好地為 OP 服務。 從鏈接的資源中合成必要的代碼應該很容易。
也因為我不清楚 OP 究竟希望他們的數據如何分組,應該根據什么繪制什么......
編輯:
在我看來,從設計矩陣到長整齊格式還有一個額外的步驟:在制作長格式后,您必須消除新創建的變量中具有NA
所有行。
畢竟我想我會發布一些代碼。 我不知道這是你想要的,但也許它會讓你朝着正確的方向思考。
DF <- data.frame(v1 = letters[1:10],
v2 = sample(c(0,1), 10, replace=TRUE),
v3 = sample(c(0,1), 10, replace=TRUE),
v4 = rnorm(10, 100, 10))
## v1 v2 v3 v4
## 1 a 0 1 80.87423
## 2 b 0 1 107.77500
## 3 c 0 0 99.93618
## 4 d 1 0 99.77675
## 5 e 0 0 93.72743
## 6 f 0 1 102.19122
## 7 g 0 0 89.06118
## 8 h 1 1 118.87512
## 9 i 0 0 98.09992
## 10 j 1 1 106.06299
library(tidyverse)
DF2 <- DF %>%
gather(key="newvar", value="category", c("v2", "v3")) %>%
filter(category == 1) %>%
select(-category) # don't need it anymore
## v1 v4 newvar
## 1 d 99.77675 v2
## 2 h 118.87512 v2
## 3 j 106.06299 v2
## 4 a 80.87423 v3
## 5 b 107.77500 v3
## 6 f 102.19122 v3
## 7 h 118.87512 v3
## 8 j 106.06299 v3
ggplot(DF2, aes(x=v1, y=v4, colour=newvar, group=newvar)) +
geom_line()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.