2017-11-13 21 views
0

私は以下のようなpng形式の工場レイアウトを持っています。 そして、私はアイテムの座標との活動データを移動する必要があり(0,0(から始まる)をし、)(100100で終了)のような:R座標を使って背景画像にプロットする

x y 
0 4 
2 5 
4 100 

(0,4)は、この位置で示す項目を意味し、私はプロットしたいです点。 (0,100)は、右下のエンドポイントを示します。

もっと頻繁に訪れると、特定の領域の色が暗くなることが予想されました。

写真のサイズに合わせて適切な縮尺で画像ファイルにアクティビティデータをプロットするにはどうすればよいですか?

enter image description here

答えて

2
library(png) 
library(grid) 
library(ggplot2) 

d <- data.frame(x=c(0,2,4), y= c(4,5,100)) 

r <- png::readPNG('factory.png') 
rg <- grid::rasterGrob(r, width=unit(1,"npc"), height=unit(1,"npc")) 

ggplot(d, aes(x,y)) + 
    annotation_custom(rg) + 
    geom_point(colour="red") + 
    scale_x_continuous(expand=c(0,0), lim=c(0,100)) + 
    scale_y_continuous(expand=c(0,0), lim=c(0,100)) + 
    theme_void() + 
    theme(aspect.ratio = nrow(r)/ncol(r)) 

enter image description here

0

あなたはラスター画像としてRにイメージをロードする場合は、rasterImage機能でそれをプロットすることができます。 I yを使用

## Your data 
PTS = read.table(text="x y 
0 4 
2 5 
4 100", 
header=TRUE) 

library(png) 
IM = readPNG(file.choose()) 
plot(NULL, xlim=c(0,100), ylim=c(0,100), axes=FALSE, xlab="", ylab="") 
rasterImage(IM,0,0,100,100) 
points(PTS[,2:1], pch=20, col="red") 

PNG IMage

お知らせ「(0100)の右下の端点を示しています。」その後、points機能のためのXは、あなたの文に一致するように、最初の座標

濃い色で高いトラフィックを表示したい場合は、透明な色を使用して、色の深みが増えるようにします。あなたの3つの点でそれを示すには不十分ですので、私はこれを説明するために他の偽のデータを作りました。

x = c(rnorm(400,40,10), rnorm(100,40,5)) 
y = 43 + rnorm(500,0,1) 
plot(NULL, xlim=c(0,100), ylim=c(0,100), axes=FALSE, xlab="", ylab="") 
rasterImage(IM,0,0,100,100) 
points(y,x, pch=20, col="#33333322") 

Point Density

+0

あなたの答えをありがとう!どのように原点を左上から変更するのですか? – EskimoT

+0

あなたはyに対してプロットすることができます(100 - x) – G5W

関連する問題