我们如何绘制棋盘(N x N)格?

4
如果我有一个如下的CSV文件:
row,column
1,0
5,1
7,2
2,3
0,4
3,5
6,6
4,7

8x8 棋盘

根据CSV数据填充黑色方格,结果如下:

填充后的8x8棋盘

我的代码在底层图上绘制了黑色方块,但我很难把它们放在正确的位置。我还是R新手,所以遇到了一些困难。我在哪里出错了?

library(data.table)

library(reshape2)
library(ggplot2)

data_csv <- fread('./data.csv')

mx <- matrix(data_csv, nrow=8, ncol=8)

ggplot(melt(mx), aes(x=Var1, y=Var2)) + geom_tile()

尝试使其动态化,以便如果CSV文件增长到n行,则仍然可以处理。

1个回答

7

首先读取数据:

chessdat <- read.table(text='row,column
1,0
5,1
7,2
2,3
0,4
3,5
6,6
4,7', sep =',', header = T)

因为geom_tile是以点为中心的,所以让我们给一个偏移量。
offset <- 0.5
chessdat2 <- chessdat + offset

然后按照之前所做的方式进行绘制:

ggplot(chessdat2, aes(row,column)) + geom_tile() + theme_bw()

这将得到:

在此输入图像描述

然后稍微调整格式,我们就可以得到棋盘:

ggplot(chessdat2, aes(row,column)) + geom_tile() + 
     theme_bw() + 
     theme(panel.grid.major = element_line(size = 2, color='black'),       
     panel.grid.minor = element_line(size=2, color = 'black'),
     axis.ticks = element_blank(), 
     axis.text = element_blank(), 
     axis.title = element_blank()) + 
     coord_cartesian(xlim=c(0,8), ylim=c(0,8))

以下是故事情节:

在这里输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接