在ggplot2中制作多个构面

时间:2018-07-11 17:42:58

标签: r ggplot2 lattice

您好,我从R中的软件包States中调用了以下数据集carData。 我正在尝试绘制以下数据。

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,水平轴上的两个变量是美元和工资。

例如,将有四个方框,而我的右上角将是薪水和卫星之间的关系。

如何使用格子或ggplot2做到这一点。

1 个答案:

答案 0 :(得分:1)

我乍看之下认为这是制作散点图矩阵的问题。 @Punintended建议使用[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000.0, 0.0) forBarMetrics:UIBarMetricsDefault]; ,并且GGally::ggpairs中可能也有一些有效的方法。但是,由于您并不是要寻找变量的 all 组合,所以我意识到这实际上是关于重塑数据的方法:您有2个独立变量GGally::ggduodollars,并且2个受抚养者,paySATV。您可以对其进行重塑,以便有一列测试类型和一列测试分数,然后再次重塑以创建一列资金类型和一列资金金额。我是通过两次致电SATM来做到这一点的。

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

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