gigplot2中的"Bin"连续值基于标准获得更多不同的颜色(如因子级着色)?

Hen*_*ndy 3 r ggplot2

现在,我只是使用这样的东西:

test_data$level <- rep("", nrow(test_data))
test_data[test_data$value <= 1, ]$level <- "1"
test_data[test_data$value > 1 & test_data$value <= 2, ]$level <- "2"
...
test_data[test_data$value > 4 & test_data$value <= 5, ]$level <- "5"
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有更好的方法在R中执行此操作,或者scale通过简单地应用一些参数ggplot2来进行分类.


可能有几种方法,所以很难准确地说出我的问题.这是要点...我有这样的数据:

 set.seed(123)
 test_data <- data.frame(var1 = rep(LETTERS[1:3], each = 5),
   var2 = rep(letters[1:5], 3),
   value = runif(30, 1, 5))
 test_data
   var1    value
1     A 2.150310
2     B 4.153221
3     C 2.635908
4     D 4.532070
5     E 4.761869
6     F 1.182226
7     G 3.112422
8     H 4.569676
9     I 3.205740
10    J 2.826459
Run Code Online (Sandbox Code Playgroud)

我有更多的数据点,我正在密谋这样的事情:

library(ggplot2)
p <- ggplot(test_data, aes(x = var1, y = var2, colour = value))
p <- p + geom_jitter(position = position_jitter(width = 0.1, heigh = 0.1))
p
Run Code Online (Sandbox Code Playgroud)

这给出了类似的东西:

在此输入图像描述

我的实际数据来自主观评价,评分为1-5,但我将类似问题捆绑在一起并将它们平均在一起,因此它们不再是整数.

我正在绘制每个因子组合的评级,以可视化哪些组合产生更高的评级.默认的连续刻度并不真正"弹出",我想得到这些值(0-1,1-2,...... 4-5)的"二进制"处理的颜色比例,就像scale_colour_discrete是因素.

所以,我的问题:

1)ggplot2是否有可能以某种方式"bin"这些,scale_colour_continuous所以我可以获得默认的因子级别着色方案,即使这是连续数据?

2)如果没有,是否有更简单的方法来创建一个新的向量,我根据标准将数字/字母替换为我的值?我有点像R新手,所以我不确定除了一堆if()或条件语句(test_data[test_data > 0 & test_data < 1, "values"] <- "a"或类似的东西).

Señ*_*r O 5

最简单的解决方案就是做

ggplot(transform(test_data, Discrete=cut(values, seq(0,5,1), include.lowest=T),...
Run Code Online (Sandbox Code Playgroud)

现在,您data.frame将根据列包含一列因子values,因此您可以aes(..., color=Discrete,...)在您的上下文中执行JUST ggplot.test_data完成绘图后,将保留格式.

当然,要保留离散列,最好的选择是:

test_data$Discrete <- cut(values, seq(0,5,1), include.lowest=T)
Run Code Online (Sandbox Code Playgroud)