R ggmap - 在地图上显示集群

R ggmap - Display Clusters on a Map

我做了聚类分析,现在我想在地图上显示不同的组。

我做了一个数据框的例子(原来的太大了)。

x1 <- c("Station1", "Station2", "Station3", "Station4", "Station5", "Station6", "Station7", "Station8")
x2 <- c(1, 2, 1, 3, 4, 1, 5, 3)
x3 <- seq(13.0, 15.3, length=8)
x4 <- seq(45.0, 48.0, length=8) 
x5 <- c("rural", "urban", "rural", "suburban", "urban", "suburban", "ubran", "rural")

TestCluster = data.frame(Station = x1, Cluster = x2, LON = x3, LAT = x4, Area = x5)

>TestCluster
  Station Cluster      LON      LAT     Area
1 Station1       1 13.00000 45.00000    rural
2 Station2       2 13.32857 45.42857    urban
3 Station3       1 13.65714 45.85714    rural
4 Station4       3 13.98571 46.28571 suburban
5 Station5       4 14.31429 46.71429    urban
6 Station6       1 14.64286 47.14286 suburban
7 Station7       5 14.97143 47.57143    ubran
8 Station8       3 15.30000 48.00000    rural

我想在地图上显示每个站点并为每个集群使用不同的颜色。

我正在使用这段代码,但我总是收到 2 条不同的错误消息。

library(ggmap)
library(ggplot2)

Europe <- get_map(location = "Europe", zoom = 4)
p = ggmap(Europe)

p = p + geom_point(data = TestCluster, aes(LON, LAT, color = Cluster), size = 1) + 
    scale_color_manual(name = "Cluster", values = c("1" = "yellow",
                                                    "2" = "orange",
                                                    "3" = "red",
                                                    "4" = "green",
                                                    "5" = "blue"))
p

我收到这些错误消息:

Scale for 'colour' is already present. Adding another scale for 'colour', which will replace the existing scale.

Error: Continuous value supplied to discrete scale

我读到第二个错误应该用 color = as.factor(Cluster) 命令解决,但它对我不起作用。

知道为什么它不起作用吗?

我现在才看到这个问题。正如杰森所说,您想将 Cluster 视为因素。这解决了第二个问题。至于第一条警告信息,我无法复制。我成功制作了一张地图。我在下载地图时更改了位置,给出了您的数据点所在的位置。您可能需要检查您使用的是哪个版本的 ggplot2 和 ggmap。这可能是首先要检查的事情之一。就我而言,我在 R 版本 3.4.3 中使用了 ggmap_2.6.1ggplot2_2.2.1

library(ggplot2)
library(ggmap)

Europe <- get_map(location = "Munich", zoom = 6)

ggmap(Europe) +
geom_point(data = TestCluster, aes(x = LON, y = LAT, color = factor(Cluster)), size = 3) +
scale_color_manual(name = "Cluster", 
                   values = c(`1` = "yellow",
                              `2` = "orange",
                              `3` = "red",
                              `4` = "green",
                              `5` = "blue"))