R语言 如何在ggplot2中过滤变量

2skhul33  于 2023-05-04  发布在  其他
关注(0)|答案(2)|浏览(169)

我的数据看起来像这样

N = 10
A <- rnorm(N)
B <- rnorm(N) 
Year <- c(2012, 2013, 2014, 2015, 2016, 2012, 2013, 2014, 2015, 2016)
CityID <- c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
df<- data.frame(CityID, A, B, Year)

如何制作散点图,该散点图具有:

  • 在x轴上:变量A,但仅适用于year == 2012
  • 在y轴上:变量B但只有year == 2015

谢谢大家。

wpx232ag

wpx232ag1#

首先,让我们为每个城市的污染和哮喘每年测量数据:

library(tidyverse)

N = 25
asthma <- runif(N)
pollution <- runif(N) 
Year <- rep(2012:2016, each = 5)
Cities <- rep(c('A','B','C','D','E'), times = 5)
df<- data.frame(Cities, asthma, pollution, Year)

head(df, 10)
#>    Cities     asthma  pollution Year
#> 1       A 0.39888372 0.29314668 2012
#> 2       B 0.01967627 0.71391652 2012
#> 3       C 0.44811480 0.49369666 2012
#> 4       D 0.04756653 0.68682790 2012
#> 5       E 0.06945347 0.15169561 2012
#> 6       A 0.04145539 0.46718386 2013
#> 7       B 0.44021672 0.26933620 2013
#> 8       C 0.62954974 0.02934014 2013
#> 9       D 0.77613099 0.42838978 2013
#> 10      E 0.95354053 0.07474578 2013

现在您可以按年份着色点,并为每个城市创建一个小面

df %>%
  ggplot(aes(asthma, pollution, color = factor(Year))) +
  geom_point() +
  facet_wrap(~Cities)

可能值得考虑查看数据的其他方式。条形图或柱形图可能会让你更容易注意到高污染的一年,并注意到下一年的高哮喘。

df %>%
  pivot_longer(c(asthma, pollution)) %>%
  ggplot(aes(factor(Year), value, fill = name)) +
  geom_col(position = 'dodge') +
  facet_wrap(~ Cities)

或者正如@Wael在评论中建议的那样:

df %>%
  pivot_longer(c(asthma, pollution)) %>%
  ggplot(aes(factor(Year), value, color = name, group = name)) +
  geom_point() +
  geom_line() +
  facet_wrap(~ Cities)

创建于2023-05-02使用reprex v2.0.2

iqxoj9l9

iqxoj9l92#

如果我理解正确的话,你可以做一个新的数据。帧,其中保留2012年的A值和2015年的B值。然后使用ggplot2绘图

library(ggplot2)
    df2 <- data.frame(A = df[df$Year == 2012,"A"], B =df[df$Year == 2015,"B"])

ggplot2::ggplot(df2) +
    geom_point(aes(A,B))

相关问题