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")
我的问题类似于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")