我想,如果有人可以帮助我解决这个问题,我已经花了好几个小时试图解决。 我必须绘制一个没有外部库的棋盘(仅使用R中的默认图形函数)。
我的尝试是使用黑色方块,直到我必须过滤并绘制白色方块:
plot(c(1:9),c(1:9),type="n")
for (i in 1:8){
rect(i,1:9,i+1,9,col="black",border="white")
}
我可以用这种方式手动完成,但我知道这有一个更简单的方法:
plot(c(1:9),c(1:9),type="n")
rect(1, 2, 2, 1,col="black",border="white")
rect(4, 1, 3, 2,col="black",border="white")
rect(6, 1, 5, 2,col="black",border="white")
rect(7, 1, 8, 2,col="black",border="white")
(...)
我尝试添加一个函数来过滤循环中的偶数,但似乎对我不起作用。 我很感激任何建议!
答案 0 :(得分:3)
使用image
并反复重复0:1。然后你可以稍微搞乱一下这些限制,使它很合适。
image(matrix(1:0, 9, 9), col=0:1, xlim=c(-.05,.93), ylim=c(-.05,.93))
答案 1 :(得分:1)
如图所示,只需更改解决方案中的col=
参数即可。另请注意,c(1:9)
可以只写为1:9
:
plot(1:9, 1:9, type = "n")
for (i in 1:8) {
col <- if (i %% 2) c("white", "black") else c("black", "white")
rect(i, 1:9, i+1, 9, col = col, border = "white")
}
答案 2 :(得分:0)
b <- matrix(nrow=8,ncol=8) # basic board
colorindex <- (col(b)+row(b))%%2 # parity of the Y-intercept
# for each square
colors <- c("red", "white")[colorindex+1] # choose colors
side <- 1/8 # side of one square
ux <- col(b)*side # upper x values
lx <- ux-side # lower x values
uy <- row(b)*side # upper y
ly <- uy-side # upper y
plot.new() # initialize R graphics
rect(lx, ly, ux, uy, col=colors, asp=1) # draw the board