我如何基于ggplot2散点图的数字阈值定义颜色组

问题描述 投票:5回答:2

我有一个包含2个变量的数据集x =事件编号&y =分析幅度。我正在尝试在ggplot2中创建一个散点图,其中> 3000的所有点都用一种颜色着色,而所有< 3000的点都用另一种颜色。

我可以获取图表并更改所有数据点的颜色,但是无法弄清楚如何根据值阈值定义颜色方案。

这里是我正在使用的数据的示例:

dat <- data.frame(x=c(399, 16022, 14756, 2609, 1131, 12135, 
                                 7097, 12438, 12604, 14912, 11042, 
                                 14024, 7033, 4971, 15533, 4507, 4627, 
                                 12600, 7458, 14557, 3999, 3154, 6073),
                  y=c(3063.40137, 3687.42041, 3911.856, 
                                    4070.91748, 4089.99561, 4095.50317,
                                    4159.899, 4173.117, 4177.78955, 
                                    4186.46875, 4201.874, 4272.022, 
                                    638.615, 649.8995, 668.8346,
                                    688.754639, 711.92, 712.689636, 
                                    721.1352, 737.841, 741.0727, 
                                    755.2549, 756.730652))
r colors ggplot2 scatter-plot threshold
2个回答
6
投票

您确实只需要为此做一个新的指标变量。正如@hrbrmstr所说,cut是执行此操作的好方法(可以根据需要使用任意多个切点)。

dat$col <- cut(dat$y,
               breaks = c(-Inf, 3000, Inf),
               labels = c("<=3000", ">3000"))

ggplot(dat, aes(x = x, y = y, color = col)) +
  geom_point()

0
投票

这可以使用ifelse语句即时完成,而不必在数据集中创建额外的列:

ggplot(dat, aes(x = x, y = y)) +
geom_point(aes(color = ifelse(y>3000, 'blue', 'red'))) +
scale_colour_manual(labels = c(">3000", "<3000"), values=c('red', 'blue')) + 
labs(color = "Values")
© www.soinside.com 2019 - 2024. All rights reserved.