【问题标题】:ggplot2 plot 3 factors with some x-axis jiggingggplot2 用一些 x 轴跳汰绘制 3 个因子
【发布时间】:2012-06-27 16:27:22
【问题描述】:

我想用 ggplot2 geom_point 绘制一个点图,其中连续变量按不同因素分层。

这很复杂,也许我试图在一张图中显示太多,但我有三个不同的因素会影响事情

我想这样展示

p <- ggplot(mtcars[,c(1,2,10,11)], aes(factor(cyl), mpg))
p + geom_point(aes(colour = factor(gear), shape=factor(carb)))

但是我想将因子(齿轮)分开,即对于 x 轴上的三个因子(cyl)值中的每一个,我想要 x 轴上不同因子(齿轮)颜色之间的小距离

即在 factor(cyl) == 4 内,factor(gear) == 3 有点像 3.9,factor(gear) == 4 有点像 4,而 factor(gear) == 5 有点像 4.1。这对每个因子(cyl)值重复。

希望这是有道理的

注意,这是一个玩具示例。我会使用分类的非数字值而不是分解的数字来做到这一点;我意识到在 3.9/4.1 上有值是令人困惑的。

【问题讨论】:

标签: r ggplot2


【解决方案1】:

facet_grid() 和 mtcars 为例:

library(ggplot2)
data(mtcars)

p <- ggplot(mtcars, aes(factor(cyl), mpg)) + geom_point(aes(colour=factor(carb)))
p + facet_grid(. ~ gear)

【讨论】:

【解决方案2】:

subset 是一种方法。通过gears对数据进行子集化,然后依次定位每个子集的点集。

library(ggplot2)

p <- ggplot()
p + geom_point(data = subset(mtcars[,c(1,2,10,11)], gear == 3), aes(x = as.numeric(factor(cyl)) - 0.1, y = mpg, colour = factor(gear), shape=factor(carb))) +
    geom_point(data = subset(mtcars[,c(1,2,10,11)], gear == 4), aes(x = as.numeric(factor(cyl)), y = mpg, colour = factor(gear), shape=factor(carb))) +
    geom_point(data = subset(mtcars[,c(1,2,10,11)], gear == 5), aes(x = as.numeric(factor(cyl)) + .1, y = mpg, colour = factor(gear), shape=factor(carb))) +
   scale_x_continuous("Cylinders", breaks = c(1,2,3), labels = c(4,6,8), expand = c(.2,0))

【讨论】:

  • 这适用于我给出的示例,但是当使用分类值而不是 Cylinders 的数字时它会起作用吗?
  • 不明白为什么不这样做。重新编码后,您可以在 mtcars 数据上尝试:library(car); mtcars$cyl = factor(recode(mtcars$cyl, "4 = 'Four'; 6 = 'Six'; 8 = 'Eight'"), levels = c("Four", "Six", "Eight")) 我总是更喜欢分面,但该解决方案实际上确实符合您的要求。
猜你喜欢
  • 2018-12-10
  • 1970-01-01
  • 2019-07-13
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
相关资源
最近更新 更多