geom_point(或qplot),用第三个变量离散着色点,而不转换为因子

时间:2015-09-23 07:27:13

标签: r colors ggplot2

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

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

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

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

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

如果不将我的变量转换为因子变量,还有另一种方法吗?

1 个答案:

答案 0 :(得分: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)