Построение шахматной доски в R. Как назвать столбцы и строки? - PullRequest
0 голосов
/ 08 ноября 2019

Я написал функцию, которая рисует шахматные доски. Я хочу назвать каждый столбец и строку, используя буквы. Но я не знаю, как это сделать.

Мой код:

chessboard=function(n){
  if(1<=n & n<=26){
    x=c(1:(n+1))
    y=c(1:(n+1))

    plot(x,y,type="n", yaxt='n',xaxt='n', ann=FALSE)
    for (i in (1:n)) {
      if(i%%2==0){
        col=c("#FFFFFF","#000000")
      }
      else{
        col=c("#000000","#FFFFFF")
        }
      rect(i,1:(n+1),i+1,(n+1), col=col, )
    }
  } 
  else{
    print("wrong!")
  }
  }

Теперь у меня есть:

enter image description here

НоЯ хочу иметь:

enter image description here

1 Ответ

2 голосов
/ 08 ноября 2019

Я не знаю много о шахматах, но это может быть близко:

library('tidyverse')

chessboard = function(n){
  if(n > 26){
    stop('Ya board too big!')
  }
  board = expand_grid(X = 1:n, Y = 1:n)
  board = board %>% 
    mutate(color = ifelse((X - Y) %% 2 == 0, 'black', 'white')) %>% 
    mutate_all(factor)
  letter_labs = LETTERS[1:n]


  ggplot(data = board, aes(x = X, y = Y, fill = color)) +
    geom_tile() +
    scale_fill_manual(values = c('black' = "#FFFFFF", 'white' = "#000000")) +
    scale_x_discrete(labels = letter_labs, name = '') +
    scale_y_discrete(labels = letter_labs, name = '') +
    theme(legend.position = 'none')

}
chessboard(10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...