绘制没有外部库的棋盘

时间:2015-11-24 06:13:14

标签: r for-loop plot chess

我想,如果有人可以帮助我解决这个问题,我已经花了好几个小时试图解决。  我必须绘制一个没有外部库的棋盘(仅使用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")
(...)

我尝试添加一个函数来过滤循环中的偶数,但似乎对我不起作用。 我很感激任何建议!

3 个答案:

答案 0 :(得分:3)

使用image并反复重复0:1。然后你可以稍微搞乱一下这些限制,使它很合适。

image(matrix(1:0, 9, 9), col=0:1, xlim=c(-.05,.93), ylim=c(-.05,.93))

enter image description here

答案 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")
}

screenshot

答案 2 :(得分:0)

记得Jeremy Kun的帖子 关于Set的https://jeremykun.com/2018/03/25/a-parlor-trick-for-set/帮助 我认为这个问题很困难(对我而言)。我意识到 板上的对角线(主教继续前进)具有恒定的颜色。 因此,它们的Y轴截距(它们在Y轴上的位置)将是唯一的 确定它们的颜色,并且相邻的Y值会有所不同 颜色。对于(x,y)处的正方形,y截距(因为斜率为1) 将在Y ==(y-x)。因为奇偶校验是相同的添加 对于减法,我永远不确定哪个mod函数(在哪个 语言)可能会给出负面结果,我使用&#34;(x + y)%% 2&#34;。

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