我想将矩阵表示为图像,因此我想使用该图,就好像每个像素都是矩阵中的一个单元格一样。但由于某种原因,我不能。首先我画在屏幕上,分辨率以英寸为单位。所以我改为直接在PNG图像中绘制,其中分辨率以像素为单位指定,但结果几乎相同!
以下代码
png(file="graf.png",width=1000,height=100)
par(mar=c(0,0,0,0))
plot(NULL,xlim=c(1,1000),ylim=c(1,100))
for (i in 1:100) {
p1 <- i
range <- i
p2 <- p1+range
segments(p1,i,p2,i)
}
dev.off()
给了我这个形象:
我们可以看到黑色三角形上方有一个白色边缘,我认为它不应该存在,因为所有高度都是100.并且所有图像周围都有黑色边框,我认为它不应该存在无论是。并且三角形不是“平滑的”,双方应该是完全笔直的,但在某些点上有“休息”,好像某些“四舍五入”在某个地方。这是为什么?为什么三角形的底角远离图像的角落?毕竟最终图像是1000x100像素!
还有一件事:如果可能的话,我宁愿在屏幕上绘制整个过程,在那里我可以看到它,并且最后只保存为PNG。 (除非直接PNG抽签更快。)
答案 0 :(得分:1)
该边框是您创建的图表周围的框。因为您将边距设置为0,所以绘图的其余部分(即轴刻度和标签)位于窗口之外。您也可以使用axes=F
删除该框。关于底部和顶部附近的白线:默认情况下,plot
会略微扩展限制。要禁用此功能,请使用xaxs='i'
和yaxs='i'
。您可以在?par
。
par(mar=c(0,0,0,0))
plot(NULL,xlim=c(1,1000),ylim=c(1,100), type='n', axes=F, yaxs='i',xaxs='i')
for (i in 1:100) {
p1 <- i
range <- i
p2 <- p1+range
segments(p1,i,p2,i)
}