2012-02-28 11 views
2

Rを使って画像をプロットすることに関して、私はここでいくつかの質問をしました。Rに画像を重ねるための参照点を設定する

ここでの違いは、画像の上にプロットしようとしているデータと一致するように画像の参照座標を設定する必要があることです。

具体的には、背景画像の座標がx = (-100,100)y = (40,-40)であることを理解するには、Rが必要です。

ReadImagesパッケージを使用してイメージファイルを読み込んでプロットすることができましたが、points()を使用してデータをオーバーレイすると、明らかにデータが適切に並べられません。

すべてのヘルプははるかに高く評価されます。

編集:ここにいくつかの例のデータがあると私はイメージenter image description here添付:その後、ポイントを追加して、あなたが画像をプロットしrasterImage機能を使用し、その後、正しい寸法の空のプロットを作成することができます

structure(list(teamid = c("6", "6", "6", "6", "6", "6", "2", 
"6", "6", "6", "2", "6", "10", "10", "10", "10", "20", "20", 
"10", "10", "10", "20", "20", "20", "10", "10"), xcoord = c("79", 
"81", "33", "34", "75", "52", "-67", "80", "44", "79", "-53", 
"54", "-55", "-81", "-66", "-66", "45", "81", "-78", "-70", "-59", 
"50", "53", "63", "-79", "-78"), ycoord = c("0", "0", "-18", 
"-20", "6", "-11", "-7", "7", "-28", "-10", "35", "22", "25", 
"-5", "25", "23", "-11", "13", "22", "16", "13", "23", "7", "16", 
"8", "8")), .Names = c("teamid", "xcoord", "ycoord"), class = "data.frame", row.names = c(74328L, 
74331L, 74332L, 74334L, 74336L, 74338L, 74340L, 74341L, 74346L, 
74347L, 74348L, 74349L, 100136L, 100137L, 100138L, 100139L, 100147L, 
100148L, 100151L, 100154L, 100156L, 100158L, 100159L, 100161L, 
100163L, 100167L)) 
+0

あなたは何をしたのか、それがどのようなものか、実際に何を達成したいのかの例を挙げることができますか?私はそれを取得しません。 – Henrik

+0

'rasterimage'ツールを使ってイメージ座標を確かに設定できますが、プロットのための"バックグラウンドイメージ "を見つける簡単な方法があると思われます。私は周りを見回します。 –

+0

これは 'rasterImage'とは違いますか?特定の座標に画像を配置する例を参照してください。 – Charles

答えて

3

をうまくいくはずです。

TeachingDemosパッケージのupdateusr機能を使用して、画像をプロットした後に、線や点を追加する前に、それらの座標が必要なものと一致するようにすることもできます。

私はice.pngとして上にあなたのグラフィックを保存し、次のコードを実行しました:

library(EBImage) 
ice <- readImage('My Pictures/ice.png') 
pos <- structure(list(teamid = c("6", "6", "6", "6", "6", "6", "2", 
    "6", "6", "6", "2", "6", "10", "10", "10", "10", "20", "20", 
    "10", "10", "10", "20", "20", "20", "10", "10"), xcoord = c("79", 
    "81", "33", "34", "75", "52", "-67", "80", "44", "79", "-53", 
    "54", "-55", "-81", "-66", "-66", "45", "81", "-78", "-70", "-59", 
    "50", "53", "63", "-79", "-78"), ycoord = c("0", "0", "-18", 
    "-20", "6", "-11", "-7", "7", "-28", "-10", "35", "22", "25", 
    "-5", "25", "23", "-11", "13", "22", "16", "13", "23", "7", "16", 
    "8", "8")), .Names = c("teamid", "xcoord", "ycoord"), 
class = "data.frame", row.names = c(74328L, 
    74331L, 74332L, 74334L, 74336L, 74338L, 74340L, 74341L, 74346L, 
    74347L, 74348L, 74349L, 100136L, 100137L, 100138L, 100139L, 100147L, 
    100148L, 100151L, 100154L, 100156L, 100158L, 100159L, 100161L, 
    100163L, 100167L)) 
pos$xcoord <- as.numeric(pos$xcoord) 
pos$ycoord <- as.numeric(pos$ycoord) 

ice2 <- as.raster(ice) 

pin <- par('pin') 
plot(c(-100,100), c(-40,40), type='n', xlab='', ylab='', 
    asp=pin[1]/pin[2], axes=FALSE, xaxs='i', yaxs='i') 
rasterImage(ice2, -100, -40, 100, 40, interpolate=FALSE) 
with(pos, text(xcoord, ycoord, teamid, col='green', cex=1.2)) 

をこれは、あなたがやりたいのか?

+0

私はrasterImageに気付きませんでした。あなたのコード例では、私はそれを動作させることができました。どうもありがとう! – Btibert3

関連する問題