【问题标题】:geom_point (or qplot), color the points with a third variable-discrete, without converting to factorsgeom_point(或 qplot),用第三个变量离散对点着色,而不转换为因子
【发布时间】:2015-09-23 07:27:12
【问题描述】:

我的故事: 我需要绘制一个二维图,其中的点由第三个变量着色,该变量是离散的,并被赋值为整数(20 个可能的值)。

目前发现: 我找到的所有代码首先将第三个变量转换为因子,然后用因子水平为点着色。例如,

p <- qplot(mpg, wt, data = mtcars, colour = factor(cyl))

p + scale_colour_manual(values = c("red","blue", "green"))

问题: 我从这里感到困惑,因为我不确定(我原来的第三个变量的)实际值对应于因子的每个级别。图例中的值是实际值还是级别?

是否有另一种方法可以在不将我的变量转换为因子变量的情况下做到这一点?

【问题讨论】:

  • 欢迎来到 SO。请生成reproducible example
  • 从概念上讲,离散变量和有序因子完全相同。唯一的区别是该因子允许可能的值具有与整数不同的名称。如果您的着色变量存储为数字,则应将其转换为因子并从渐变中选择颜色以说明它们的排序方式。

标签: r colors ggplot2


【解决方案1】:

如果您查看来自 mtcars 的输出,您会看到 cyl 变量的值(在转换为因子之前)是 4、6 和 8。

> mtcars
                     mpg cyl  disp  hp drat    wt
Mazda RX4           21.0   6 160.0 110 3.90 2.620
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875
Datsun 710          22.8   4 108.0  93 3.85 2.320
Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440
...

当您将mtcars$cyl 变量转换为因子时,它使用原始值作为标签:

> mtcars$cyl <- as.factor(mtcars$cyl)
> str(mtcars$cyl)
 Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...

因此,您在上面创建的图形示例正在输出新的因子标签,这些标签直接对应于您的原始值。也就是说,将您的 20 级离散变量转换为一个因子并使用新的因子变量为您的图形着色应该是安全的,标签将是正确的。

如果您不想更改 20 级离散变量,您始终可以将其绘制为连续变量,但我认为生成的图例不是您所追求的图例类型。

qplot(mpg, wt, data = mtcars, colour = cyl)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2017-01-29
    • 2021-02-12
    相关资源
    最近更新 更多