【问题标题】:How to choose only one column of a Matrix of plots in R如何在R中只选择一个图矩阵的一列
【发布时间】:2017-07-02 10:31:45
【问题描述】:

所以,我有一个 6*4500 的 data.frame 这里是前三行和列的示例:

1912.5000   4246.6053   5543.7895
2080.6667   2484.7333   3317.6333
531.6667    4131.1000   5286.9000

当我使用时:

plot(df) 

我得到一个矩阵散点图。

  • 即,x vs y 和 x vs z 是第一列。
  • y vs x,y vs z是第二列
  • z vs x,z vs y 是第三列。

该示例适用于完整的数据框,只有前三列。 忽略缺失的 x 和 y,我将它们切断,它们存在...

我的问题是如何仅绘制第一列。意思是,X vs y 和 X vs z 理论上我可以用循环和子图来做到这一点。我更喜欢让它高效。

【问题讨论】:

  • plot(df$x, df$y)?
  • 或者,试试library(reshape2); library(ggplot2); ggplot(melt(df, id.vars = "x"), aes(x=x, y=value)) + geom_point() + facet_wrap("variable")
  • Coffeinjunky,那只会给我 x 和 y。我也想要 x vs z,以及 x vs p 等(6 列)。至于第二个建议,我不确定它是做什么的......我知道它以某种方式结合了这些价值观......你能澄清一下吗?
  • 见下面我的帖子。

标签: r matrix dataframe plot


【解决方案1】:

考虑:

library(reshape2)
library(ggplot2)
df <- mtcars[,1:4]
head(df)
                   mpg cyl disp  hp
Mazda RX4         21.0   6  160 110
Mazda RX4 Wag     21.0   6  160 110
Datsun 710        22.8   4  108  93
Hornet 4 Drive    21.4   6  258 110
Hornet Sportabout 18.7   8  360 175
Valiant           18.1   6  225 105

这是你不想要的:

plot(df)

现在,为了轻松生成分组或分面图,ggplot2 可能是您想要使用的包。 ggplot2 要求您以长格式传递数据帧,这是通过首先melting 数据帧来实现的,将您的x 变量保持为id 变量。这意味着您本质上是将列“堆叠”在彼此之上,重复 id 变量并保持对它最初所属的列的引用。这里我以mtcars 数据集为例,其中x 是每小时英里数或mpg

df2 <- melt(df, id.vars = "mpg")
head(df2)
   mpg variable value
1 21.0      cyl     6
2 21.0      cyl     6
3 22.8      cyl     4
4 21.4      cyl     6
5 18.7      cyl     8
6 18.1      cyl     6

tail(df2)
    mpg variable value
91 26.0       hp    91
92 30.4       hp   113
93 15.8       hp   264
94 19.7       hp   175
95 15.0       hp   335
96 21.4       hp   109

拥有这种数据框,您可以绘制使用例如

ggplot(df2, aes(x=mpg, y=value)) + geom_point() + facet_wrap("variable", scales="free)

为每个组/初始列获取一个图表。

【讨论】:

  • 这很棒。谢谢咖啡迷。仍然低于 15rep,所以我不能投票:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
相关资源
最近更新 更多