在 R 中绘制一个简单的图像
Drawing a simple image in R
我完全不熟悉 R(来自 MATLAB)。我正在尝试生成一个由几个较小的彩色区域组成的矩形图像。它基本上是一个温度计。它将位于 transparent/white 背景中,左边有一个 line/arrow 指向某种颜色的空间,左边有一个字符串,例如"XXXX sits here"。
我可以在 MATLAB 中完成,不用太担心(新工作场所使用 R),我只需定义一个绘图区域,用特定颜色填充矩形以绘制温度计,使用变量绘制一条水平线告诉我它在温度计上的位置,然后在其左侧添加一个带有名称的字符串。然后我会将这批货另存为图片,或者将其发送到我正在处理的模板中。
我在 R 中很难做到这一点(使用 R studio)。这是我目前所拥有的:
require(grDevices)
## set up the plot region:
dev.off()
ACE <- par(bg = "transparent", usr = c(0, 51, 0, 451)) #make the plot window a certain size?
plot(x=NULL, y=NULL , type = "n", axes = F, xlab = "", ylab = "", xlim=c(0,51), ylim=c(0,450)) #set up the plot?
#draw rectangles for thermometer
rect(0, 0, 50, 148, col = "#c00000", border = "transparent") #red
rect(0, 148, 50, 225, col = "#ed7d31", border = "transparent") #orange
rect(0, 225, 50, 297, col = "#ffc000", border = "transparent") #gold
rect(0, 297, 50, 360, col = "#92d050", border = "transparent") #lgreen
rect(0, 360, 50, 450, col = "#00b050", border = "transparent") #dgreen
assign("ACE", ACE)
#set up png
png(filename = "ACE.png",
width = 5, height = 15, units = "cm", pointsize = 12,bg = "white", res = 300,family = "", restoreConsole = TRUE,type = c("windows", "cairo", "cairo-png"))
print(ACE) #send my plot to the png????
dev.off()
它在 R studio 的 "plots" 选项卡中以正确的高度绘制颜色,但似乎填满了整个图,无论我告诉它我想要什么尺寸。我也不确定如何预览它(la imshow())。 png 输出是正确的尺寸,但它是空的。
我真的很感激你能给我的任何帮助,我在过去的几个小时里一直试图独自完成它,但只做到了这一点。
非常感谢,
亚历克斯
在图像文件中打印的方法如下:
#set up png
png(filename = "ACE.png", width = 5, height = 15, units = "cm", pointsize = 12, res = 300)
par(bg = "transparent", usr = c(0, 51, 0, 451)) #make the plot window a certain size?
plot(x=NULL, y=NULL , type = "n", axes = F, xlab = "", ylab = "", xlim=c(0,51), ylim=c(0,450)) #set up the plot?
#draw rectangles for thermometer
rect(0, 0, 50, 148, col = "#c00000", border = "transparent") #red
rect(0, 148, 50, 225, col = "#ed7d31", border = "transparent") #orange
rect(0, 225, 50, 297, col = "#ffc000", border = "transparent") #gold
rect(0, 297, 50, 360, col = "#92d050", border = "transparent") #lgreen
rect(0, 360, 50, 450, col = "#00b050", border = "transparent") #dgreen
dev.off()
我完全不熟悉 R(来自 MATLAB)。我正在尝试生成一个由几个较小的彩色区域组成的矩形图像。它基本上是一个温度计。它将位于 transparent/white 背景中,左边有一个 line/arrow 指向某种颜色的空间,左边有一个字符串,例如"XXXX sits here"。
我可以在 MATLAB 中完成,不用太担心(新工作场所使用 R),我只需定义一个绘图区域,用特定颜色填充矩形以绘制温度计,使用变量绘制一条水平线告诉我它在温度计上的位置,然后在其左侧添加一个带有名称的字符串。然后我会将这批货另存为图片,或者将其发送到我正在处理的模板中。
我在 R 中很难做到这一点(使用 R studio)。这是我目前所拥有的:
require(grDevices)
## set up the plot region:
dev.off()
ACE <- par(bg = "transparent", usr = c(0, 51, 0, 451)) #make the plot window a certain size?
plot(x=NULL, y=NULL , type = "n", axes = F, xlab = "", ylab = "", xlim=c(0,51), ylim=c(0,450)) #set up the plot?
#draw rectangles for thermometer
rect(0, 0, 50, 148, col = "#c00000", border = "transparent") #red
rect(0, 148, 50, 225, col = "#ed7d31", border = "transparent") #orange
rect(0, 225, 50, 297, col = "#ffc000", border = "transparent") #gold
rect(0, 297, 50, 360, col = "#92d050", border = "transparent") #lgreen
rect(0, 360, 50, 450, col = "#00b050", border = "transparent") #dgreen
assign("ACE", ACE)
#set up png
png(filename = "ACE.png",
width = 5, height = 15, units = "cm", pointsize = 12,bg = "white", res = 300,family = "", restoreConsole = TRUE,type = c("windows", "cairo", "cairo-png"))
print(ACE) #send my plot to the png????
dev.off()
它在 R studio 的 "plots" 选项卡中以正确的高度绘制颜色,但似乎填满了整个图,无论我告诉它我想要什么尺寸。我也不确定如何预览它(la imshow())。 png 输出是正确的尺寸,但它是空的。
我真的很感激你能给我的任何帮助,我在过去的几个小时里一直试图独自完成它,但只做到了这一点。
非常感谢, 亚历克斯
在图像文件中打印的方法如下:
#set up png
png(filename = "ACE.png", width = 5, height = 15, units = "cm", pointsize = 12, res = 300)
par(bg = "transparent", usr = c(0, 51, 0, 451)) #make the plot window a certain size?
plot(x=NULL, y=NULL , type = "n", axes = F, xlab = "", ylab = "", xlim=c(0,51), ylim=c(0,450)) #set up the plot?
#draw rectangles for thermometer
rect(0, 0, 50, 148, col = "#c00000", border = "transparent") #red
rect(0, 148, 50, 225, col = "#ed7d31", border = "transparent") #orange
rect(0, 225, 50, 297, col = "#ffc000", border = "transparent") #gold
rect(0, 297, 50, 360, col = "#92d050", border = "transparent") #lgreen
rect(0, 360, 50, 450, col = "#00b050", border = "transparent") #dgreen
dev.off()