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_pathggplot2 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,以获得更自然的棋盘感觉。