Source of the distances: http://www.distancecalculator.net/ driving distance
city_names <- c("Prag", "Tabor", "Budweis", "Pilsen", "Brno", "Znojmo", "Wien",
"Linz", "Nikitsch")
dist_v <- c(0, 92, 147, 93, 205, 203, 331, 244, 427, 0, 0, 61, 124, 165, 152,
223, 158, 313, 0, 0, 0, 137, 217, 142, 195, 97, 285, 0, 0, 0, 0, 296, 293,
421, 230, 571, 0, 0, 0, 0, 0, 67, 133, 317, 228, 0, 0, 0, 0, 0, 0, 89, 222,
179, 0, 0, 0, 0, 0, 0, 0, 184, 93, 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, 0, 0,
0, 0, 0, 0, 0, 0)
n <- length(city_names)
dist.m <- matrix(dist_v, ncol = n, byrow = TRUE)
colnames(dist.m) <- city_names
rownames(dist.m) <- city_names
## swap
for (j in 1:(n - 1)) {
for (i in (j + 1):n) {
dist.m[i, j] <- dist.m[j, i]
dist.m[j, i] <- 0
}
}
dist <- as.dist(dist.m)
dist
## Prag Tabor Budweis Pilsen Brno Znojmo Wien Linz
## Tabor 92
## Budweis 147 61
## Pilsen 93 124 137
## Brno 205 165 217 296
## Znojmo 203 152 142 293 67
## Wien 331 223 195 421 133 89
## Linz 244 158 97 230 317 222 184
## Nikitsch 427 313 285 571 228 179 93 263
fit <- cmdscale(dist, eig = TRUE, k = 2)
points <- data.frame(x = fit$points[, 1], y = fit$points[, 2])
ggplot(points, aes(x = x, y = y)) + geom_point(data = points, aes(x = x, y = y)) +
geom_text(data = points, aes(x = x, y = y - 20, label = city_names)) + coord_fixed(ratio = 1) +
ggtitle("Driving Distance between Important Cities")