如何在R中绘制像素精确的绘图

如何在R中绘制像素精确的绘图,r,plot,pixel,R,Plot,Pixel,我想把一个矩阵表示成一个图像,所以我想使用这个图,就好像每个像素都是矩阵中的一个单元一样。但由于某种原因我不能。首先我在屏幕上画,分辨率是英寸。所以我改为直接在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 <

我想把一个矩阵表示成一个图像,所以我想使用这个图,就好像每个像素都是矩阵中的一个单元一样。但由于某种原因我不能。首先我在屏幕上画,分辨率是英寸。所以我改为直接在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()
png(file=“graf.png”,宽=1000,高=100)
par(mar=c(0,0,0,0))
绘图(NULL,xlim=c(11000),ylim=c(1100))
因为(我在1:100){

p1该边框是您创建的绘图周围的框。由于您将边距设置为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)
}
par(mar=c(0,0,0,0))
绘图(NULL,xlim=c(11000),ylim=c(1100),type='n',axes=F,yaxs='i',xaxs='i')
因为(我在1:100){

p1也更容易使用
多边形(x=c(0100200,0),y=c(0100100,0),col=1)
而不是单独的线段。或者
线段(x0=rep(0100),x1=101:200,y0=rep(0100),y1=rep(100100),col=1)
如果你真的想要分段;)是的,谢谢。但这只是对实际算法的简化。每条线将位于不同的位置,模拟某些物种的分布。:)顺便说一句,在屏幕上绘制以稍后保存很难正确,因为英寸不精确?或者不是那么复杂?我通常从绘制o开始在屏幕上,然后当我满意时,使用
pdf()
tiff()
绘制精确大小的绘图。也许是有帮助的。这应该可以做到:dev.new(宽=1000,高=100,units=“px”,res=1)。但是dev.size(“px”)返回1088 x 108!很简单,但我不知道如何在屏幕上以像素为单位绘制正确的大小,仅以英寸为单位。
tiff
png
绘图可以以像素为单位指定,因此我使用这些来创建精确大小的绘图。也没有多少额外工作。