[英]R: scatterplot from list
我有類似以下數據:
a <- list("1999"=c(1:50), "2000"=rep(35, 20), "2001"=c(100, 101, 103))
我想做一個散點圖,其中x軸是年份(如列表名稱所給定的1999、2000、2001),而y軸是每個列表中的值。 是否有捷徑可尋? 我可以通過一個簡單的boxplot(a)
實現接近我想要的東西,但我希望它是一個散點圖,而不是boxplot。
這會做你想要的
do.call(rbind,
lapply(names(a), function(year) data.frame(year = year, obs = a[[year]]))
)
或將其分為兩個函數調用( lapply
然后執行do.call
),以使操作更容易理解。 如果您經歷過,這很簡單。 lapply
創建一個數據lapply
,其中每年獲取列表中該年的所有值。 現在您有3個數據框。 然后do.call
將這些數據幀綁定在一起。
您可以創建一個數據框,其中年份在一列中,值在另一列中,然后可以繪制相應的列:
b <- data.frame(year=as.numeric(rep(names(a), sapply(a, length))), val=unlist(a))
plot(b)
使用tidyr/dplyr/ggplot2
的選項
library(ggplot2)
library(tidyr)
library(dplyr)
unnest(a, year) %>%
ggplot(., aes(x=year, y=x)) +
geom_point(shape=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.