R,创建一个带有指示路径的矩阵的骑士游览图
R, creating a knights tour plot with a matrix indicating the path
我需要根据这样的示例矩阵创建一个骑士之旅情节:
Mat = matrix(c(1, 38, 55, 34, 3, 36, 19, 22,
54, 47, 2, 37, 20, 23, 4, 17,
39, 56, 33, 46, 35, 18, 21, 10,
48, 53, 40, 57, 24, 11, 16, 5,
59, 32, 45, 52, 41, 26, 9, 12,
44, 49, 58, 25, 62, 15, 6, 27,
31, 60, 51, 42, 29, 8, 13, 64,
50, 43, 30, 61, 14, 63, 28, 7), nrow=8, ncol=8, byrow=T)
数字表示骑士移动以创建路径的顺序。
我有很多这样的结果,棋盘的大小高达 75,但是我无法以可读的方式呈现它们,我发现给定矩阵的 R 能够创建这样的图:
link(这个尺寸为 50x50)
所以对于我给出的矩阵,两点之间的线出现在数字之间,例如:1 - 2 - 3 - 4 - 5 - ... - 64,最后创建 [=20 中显示的路径=],但对于 8x8 棋盘,而不是 50x50
然而,我只有非常有限的时间来学习 R 足以完成它,我迫切需要任何一种方向。在 R 中创建这样的代码,将任何矩阵转换成这样的图,会有多难?还是微不足道的事情?任何代码示例都是一种祝福
您可以按照此处所述使用 geom_path
:ggplot2 line plot order
为此,您需要将矩阵转换为 tibble。
coords <- tibble(col = rep(1:8, 8),
row = rep(1:8, each = 8))
coords %>%
mutate(order = Mat[8 * (col - 1) + row]) %>%
arrange(order) %>%
ggplot(aes(x = col, y = row)) +
geom_path() +
geom_text(aes(y = row + 0.25, label = order)) +
coord_equal() # Ensures a square board.
您可以从列和行位置中减去 .5,以获得更自然的棋盘感觉。
我需要根据这样的示例矩阵创建一个骑士之旅情节:
Mat = matrix(c(1, 38, 55, 34, 3, 36, 19, 22,
54, 47, 2, 37, 20, 23, 4, 17,
39, 56, 33, 46, 35, 18, 21, 10,
48, 53, 40, 57, 24, 11, 16, 5,
59, 32, 45, 52, 41, 26, 9, 12,
44, 49, 58, 25, 62, 15, 6, 27,
31, 60, 51, 42, 29, 8, 13, 64,
50, 43, 30, 61, 14, 63, 28, 7), nrow=8, ncol=8, byrow=T)
数字表示骑士移动以创建路径的顺序。 我有很多这样的结果,棋盘的大小高达 75,但是我无法以可读的方式呈现它们,我发现给定矩阵的 R 能够创建这样的图: link(这个尺寸为 50x50)
所以对于我给出的矩阵,两点之间的线出现在数字之间,例如:1 - 2 - 3 - 4 - 5 - ... - 64,最后创建 [=20 中显示的路径=],但对于 8x8 棋盘,而不是 50x50
然而,我只有非常有限的时间来学习 R 足以完成它,我迫切需要任何一种方向。在 R 中创建这样的代码,将任何矩阵转换成这样的图,会有多难?还是微不足道的事情?任何代码示例都是一种祝福
您可以按照此处所述使用 geom_path
:ggplot2 line plot order
为此,您需要将矩阵转换为 tibble。
coords <- tibble(col = rep(1:8, 8),
row = rep(1:8, each = 8))
coords %>%
mutate(order = Mat[8 * (col - 1) + row]) %>%
arrange(order) %>%
ggplot(aes(x = col, y = row)) +
geom_path() +
geom_text(aes(y = row + 0.25, label = order)) +
coord_equal() # Ensures a square board.
您可以从列和行位置中减去 .5,以获得更自然的棋盘感觉。