R - 像素矩阵的图像?
如何在 R 中从矩阵生成图像?
矩阵值将对应于图像上的像素强度(尽管我现在只对 0,1 值白色或黑色感兴趣。),而列数和行数对应于图像上的垂直和水平位置。
我所说的制作图像是指将其显示在屏幕上并将其另存为 jpg 格式。
How would you you make an image from a matrix in R?
Matrix values would correspond to pixel intensity on image (although I am just interested in 0,1 values white or black at the moment.), while column and row numbers correspond to vertical and horizontal location on the image.
By make an image I mean display it on the screen and save it as a jpg.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您可以使用“图像”最简单地将其显示在屏幕上:
您还可以查看光栅包...
You can display it on the screen easiest using 'image':
You can also have a look at the raster package...
设置没有边距的绘图:
用灰度对矩阵进行成像,就像 spacedman 的答案一样,但完全填充设备:
将其包装在对 png() 的调用中以创建文件:
如果需要使用空间轴执行此操作(默认为 [ 0,1] 对于 X 和 Y),然后使用 image.default(x, y, z, ...) 形式,其中 x 和 y 给出 z 中像素的中心位置。
x
和y
的长度可以是 dim(z) + 1,以给出该约定的角坐标。像素中心(这是图像的默认值):
像素角(需要 1 个额外的 x 和 y,0 现在是左下角):
请注意,从 R 2.13 image.default 获得一个参数
useRaster< /code> 它使用非常高效的新图形函数
rasterImage
而不是旧的image
,后者实际上是在引擎盖下多次调用rect
进行绘制每个像素都是一个多边形。Set up a plot with no margin:
Image the matrix with greyscale, like spacedman's answer but completely filling the device:
Wrap that in a call to png() to create the file:
If you need to do this with spatial axes (defaults to [0,1] for X and Y) then use the
image.default(x, y, z, ...)
form where x and y give the central positions of the pixels in z.x
andy
can be of length dim(z) + 1 to give corner coordinates for that convention.Centres of pixels (this is the default for image):
Corners of pixels (need 1 extra x and y, and 0 is now the very bottom left corner):
Note that from R 2.13 image.default gains an argument
useRaster
which uses the very efficient newish graphics functionrasterImage
rather than the oldimage
which is effectively multiple calls torect
under the hood to draw every pixel as a polygon.我用两种方法之一制作一个矩阵(其中垂直轴向下增加)。下面是使用 heatmap.2() 的第一种方法。它可以更好地控制图中数值的格式(请参阅下面的 formatC 语句),但在更改布局时处理起来有点困难。
I do a matrix (where the vertical axis increases going down) one of two ways. Below is the first way using heatmap.2(). It has more control over how the numeric values are formatted in the plot (see the formatC statement below), but is a little harder to deal with when changing the layout.
您可以创建矩阵的热图。
请参阅
?pheatmap
了解更多选项。You can create a heatmap of the matrix.
See
?pheatmap
for more options.尝试水平图:
Try levelplot:
这是第二种方法(同样,垂直轴向下增加)。此方法更易于布局,但对图中显示的数值格式的控制较少。
Here's the second way (again, where the vertical axis increases going down). This method is easier to layout, but has less control over the format of the numeric values displayed in the plot.
使用
ggplot2
:With
ggplot2
: