【问题标题】:R: Making multiple categorized scatterplots from one dataframeR:从一个数据帧制作多个分类散点图
【发布时间】:2013-09-10 15:42:48
【问题描述】:

我正在尝试使用来自 B 和 C 的数据创建散点图,但是我想为 A 中的每个类别创建一个差异散点图。

A           B   C
Monday      2   4
Tuesday     4   2
Monday      3   5
Wednesday   3   10
Friday      7   9

这是我目前拥有的代码,只是用我的数据制作一个正常的散点图。有没有可以用来根据类别自动制作散点图的补充或其他东西?

attach(data)
plot(C, B, main="scatterplots",xlab="C", ylab="B", pch=10) 
abline(lm(C~B), col="red")

【问题讨论】:

  • 我怀疑这是一个玩具示例,但我不得不指出 attach() 在 R 中不推荐使用,并且您每天需要超过 1 个 B C 对才能使散点图有意义,也许换个情节更合适。
  • @gung;这不是我的真实数据集,但我想说明我的观点。我在很多我一直在寻找图形的示例脚本中看到了 attach(),你有推荐的方法来代替那个吗?
  • 如果您使用plot 的“公式表示法”表示法,您可以同时使用datasubset 参数,例如df <- data.frame(x = 1:10, y = rnorm(10)); plot(y ~ x, data = df, subset = x > 5)

标签: r


【解决方案1】:

这可能是一个解决方案:

par(mfrow=c(1, length(levels(A))))
for (day in levels(A)){
  subs <- subset(data, A==day)
  plot(subs$C, subs$B, main=day)
  abline(lm(C~B), col="red")  
}

请注意,您必须调整您的 xlimylim 值,以防您想在每个图中看到适合的红线。这有帮助吗?

【讨论】:

  • 谢谢!我已经创建了我需要的散点图。然而,它们超级皱巴巴的。我想这就是您调整 lim 值的意思?
  • 这是因为代码将所有四个图都绘制在一行中。您可以手动调整绘图窗口的大小或使用 x11 命令在不同的窗口中创建绘图。当您使用jpegpdf 保存绘图时,您也可以指定宽度和高度。
【解决方案2】:

显示以另一个变量为条件的图是 lattice 包的设计目的。在您的情况下,它可能很简单:

library(lattice)
xyplot(B~C|A, data=data, type=c('p','r'))

ggplot2 包也使用 faceting 来做到这一点:

library(ggplot2)
qplot( C, B, data=data, facets= A ~ .) + geom_smooth(method='lm')

【讨论】:

  • 这很好用,而且图表本身看起来非常好!谢谢你的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 2012-12-27
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
相关资源
最近更新 更多