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.1
和 ggplot2_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"))
我做了聚类分析,现在我想在地图上显示不同的组。
我做了一个数据框的例子(原来的太大了)。
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.1
和 ggplot2_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"))