【问题标题】:Making multiple facets in ggplot2在 ggplot2 中制作多个方面
【发布时间】:2018-07-11 17:42:58
【问题描述】:

您好,我从 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 来做到这一点。

【问题讨论】:

  • 你试过ggplot2facet_wrapfacet_grid吗?
  • 我试过了,但我不知道如何为四个变量做我看过的教程ggplot2.tidyverse.org/reference/facet_grid.html 只做两个
  • 如果我没看错,您想成对地比较多组变量。这听起来像是 ggpairs 的工作!

标签: r ggplot2 lattice


【解决方案1】:

乍一看,我认为这是制作散点图矩阵的问题。 @Punintended 建议 GGally::ggpairsGGally::ggduo 中可能有一些东西也可以工作。但由于您不是在寻找变量的所有组合,我意识到这实际上是关于重塑数据:您有 2 个自变量,dollarspay,还有 2 个从属变量,@ 987654327@ 和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

之后,分面将起作用,因为您现在可以通过某种方式将数据分开,按资金类型(花费或支付的美元)与测试类型(口头或数学)。

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 年 7 月 11 日创建。

【讨论】:

  • 无论如何都可以在不使用 tidyverse 的情况下重塑数据,因为我似乎无法让它在 R 上工作
  • 当然。 tidyverse 确实是调用多个包的简写——我将替换为此处实际使用的包。不过,不知道为什么只要安装了tidyverse,就无法加载它。或者,您可以使用reshape2::melt,尽管我对此不太熟练
猜你喜欢
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
相关资源
最近更新 更多