首页 文章

在ggplot2中创建多个方面

提问于
浏览
0

您好我从R中的包 carData 中调用了以下数据集 States . 我试图绘制以下数据 .

head(States)

   region      pop SATV SATM percent dollars pay
AL    ESC     4041  470  514       8   3.648  27
AK    PAC      550  438  476      42   7.887  43
AZ    MTN     3665  445  497      25   4.231  30
AR    WSC     2351  470  511       6   3.334  23
CA    PAC    29760  419  484      45   4.826  39
CO    MTN     3294  456  513      28   4.809  31

我想要做的是创建一个图表,显示该图表中的四个数据 . 我想要一个多方面的图表 .

我的垂直轴上的两个变量是SATV和SATM,横轴上的两个变量是美元和支付 .

例如,有四个盒子,我的右上角是pay和satv之间的关系 .

我怎样才能使用lattice或ggplot2来做到这一点 .

1 回答

  • 1

    我乍一看这是制作散点图矩阵的问题 . @Punintended建议 GGally::ggpairsGGally::ggduo 中可能还有一些东西也可以 . 但由于你没有寻找变量的所有组合,我意识到这实际上是关于重塑数据:你有2个自变量, dollarspay ,和2个依赖, SATVSATM . 您可以对其进行重新设置,以便有一列测试类型和一列测试分数,然后再次重新整形以创建一列资金类型和一列资金数额 . 我做了两次 tidyr::gather 的调用 .

    library(dplyr)
    library(tidyr)
    library(ggplot2)
    
    data(States, package = "carData")
    
    states_long <- States %>%
      gather(key = test_type, value = score, SATV, SATM) %>%
      gather(key = funding_type, value = funding_value, dollars, pay)
    
    head(states_long)
    #>   region   pop percent test_type score funding_type funding_value
    #> 1    ESC  4041       8      SATV   470      dollars         3.648
    #> 2    PAC   550      42      SATV   438      dollars         7.887
    #> 3    MTN  3665      25      SATV   445      dollars         4.231
    #> 4    WSC  2351       6      SATV   470      dollars         3.334
    #> 5    PAC 29760      45      SATV   419      dollars         4.826
    #> 6    MTN  3294      28      SATV   456      dollars         4.809
    

    在此之后,facetting将起作用,因为您现在可以通过资金类型(花费或支付的金额)与测试类型(口头或数学)分开数据 .

    ggplot(states_long, aes(x = funding_value, y = score)) +
      geom_point() +
      facet_grid(test_type ~ funding_type, scales = "free")
    

    reprex package(v0.2.0)创建于2018-07-11 .

相关问题