R 如何在ggplot2中绘制png图像?
图像显示不正确,已向左旋转90度R 如何在ggplot2中绘制png图像?,r,ggplot2,R,Ggplot2,图像显示不正确,已向左旋转90度 library(“png”) 图书馆(“ggplot2”) 下载文件(“https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png", “wiki.png”,模式='wb') img=readPNG(“wiki.png”) grd=展开网格(1:178,1:172) 尺寸(img)=c(178*172,3) img=as.data.frame(img) img=cbind(grd,img) co
library(“png”)
图书馆(“ggplot2”)
下载文件(“https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png",
“wiki.png”,模式='wb')
img=readPNG(“wiki.png”)
grd=展开网格(1:178,1:172)
尺寸(img)=c(178*172,3)
img=as.data.frame(img)
img=cbind(grd,img)
colnames(img)=c(“X”、“Y”、“R”、“G”、“B”)
img$RGB=RGB(img$R、img$G、img$B)
ggplot(img,aes(x=x,y=y,fill=RGB))+
geom_光栅()+
比例填充标识()
光栅图像本质上是一个矩阵-第一行、第一列位于左上角,并且是典型的矩阵尺寸顺序(行、列)
ggplot
的默认值用于以笛卡尔坐标系打印数据,其中,如果您的绘图具有所有正值,“起点”(原点)位于左下角,并且尺寸的典型顺序为(x,y)
这些是非常不同的系统,因此您需要在这两个系统之间进行转换以采用这种方法:
aes(x=Y,Y=-x,fill=RGB)
-尽管为了让事情更清楚,您可能希望为图像坐标选择不同于X
和Y
的名称。这是打印约定与图像约定的标准问题
怎么样
ggplot(img, aes(x = Y, y = X, fill = RGB)) +
geom_raster() + scale_fill_identity() + scale_y_reverse()
?