簡體   English   中英

R:列表中的散點圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM