R - ggplot - 如何根据值自动设置点颜色?

R - ggplot - How to automatically set point color based on values?

我的问题类似于this question

但是我无法将其转移到我自己的数据中。

我有一个这样的数据框(超过 1400 行):

     Code                  Stationsname Startdatum      LAT      LON Höhe  Area     Mean
1 AT0ENK1       Enzenkirchen im Sauwald 03.06.1998 48.39167 13.67111  525 rural 55.76619
2 AT0ILL1                       Illmitz 01.05.1978 47.77000 16.76640  117 rural 58.98511
3 AT0PIL1          Pillersdorf bei Retz 01.02.1992 48.72111 15.94223  315 rural 59.47489
4 AT0SON1                     Sonnblick 01.09.1986 47.05444 12.95834 3106 rural 97.23856
5 AT0VOR1 Vorhegg bei K”tschach-Mauthen 04.12.1990 46.67972 12.97195 1020 rural 70.65373
6 AT0ZIL1             Ried im Zillertal 08.08.2008 47.30667 11.86389  555 rural 36.76401

现在我想用 ggplot 创建一个地图,并根据 Mean 列中的值以不同颜色显示点,它从 18 到 98。

此外,如果 Höhe 列中的值超过 700,我想将符号从点更改为三角形。

直到现在我都是这样做的:

library(ggmap)
library(ggplot2)

Europe <- get_map(location = "Europe", zoom = 3)

p = ggmap(Europe)

p = p + geom_point(data = Cluster, aes(LON, LAT, color = Mean), 
                   size = 1.5, pch = ifelse(Höhe < 700,'19','17')) +
    scale_x_continuous(limits = c(-25.0, 40.00), expand = c(0, 0)) +
    scale_y_continuous(limits = c(34.00, 71.0), expand = c(0, 0)) +
    scale_colour_gradient ---??

但我不知道如何继续和分配颜色。

我使用他的数据与 OP 进行了讨论。他的问题之一是让 scale_colour_gradient2() 工作。解决方案是设置一个中点值。默认情况下,它在函数中设置为 0。在他的案例中,他有一个连续变量,其中位数约为 50。

library(ggmap)
library(ggplot2)
library(RColorBrewer)

Europe2 <- get_map(maptype = "toner-2011", location = "Europe", zoom = 4) 

ggmap(Europe2) +
geom_point(data = Cluster, aes(x = LON, y = LAT, color = Mean, shape = Höhe > 700), size = 1.5, alpha = 0.4) + 
scale_shape_manual(name = "Altitude", values = c(19, 17)) + 
scale_colour_gradient2(low = "#3288bd", mid = "#fee08b", high = "#d53e4f",
                       midpoint = median(Cluster$Mean, rm.na = TRUE))

地图中的颜色似乎不太好,给定的值似乎趋于接近中值。我认为 OP 需要使用 cut() 创建一个新的分组变量并为组分配颜色或使用另一种 scale_color 类型的函数。我想出了以下 RColorBrewer 包。我认为 OP 需要考虑他想如何使用颜色来修饰他的图形。

ggmap(Europe2) +
geom_point(data = Cluster, aes(x = LON, y = LAT, color = Mean, shape = Höhe > 700), size = 1.5, alpha = 0.4) + 
scale_shape_manual(name = "Altitude", values = c(19, 17)) + 
scale_colour_distiller(palette = "Set1")