2017-02-07 8 views
1

私は現在Rの問題に取り組んでいます。私は経験が不足しているので、Rにはかなり新しいので、簡単な問題です。 私はいくつかのデータに関連してイメージを拡大縮小することに問題があります。 画像は平面図です。私が持っているデータは手動で記録されます。 DataRヒートマップの画像スケーリング

マイコードは次のようになります:

theData <-data.frame(EntryNr = c(0001,0002,0003,0004,0005,0006,0007), 
       TimeSet = c('2017-01-15','2017-01-17','2017-01-18','2017-01-19','2017-01-20','2017-01-21','2017-01-22'), 
       SomeID = c('Mario','Mario','Mario','Luigi','Luigi','Luigi','Bowser'), 
       Room = c('Room1','Room1', 'Room1', 'Room1', 'Room1', 'Room1','Room1'), 
       theX = c(12.011, 11.767, 11.715, 11.827, 11.773,11.846,11.781), 
       theY = c(6.733, 6.698, 6.871, 6.799, 6.887, 6.327,6.577), 
       theZ = c(3, 2.958, 2.983, 2.981, 2.992,2.952,2.945)) 

thePicture <- readPNG("FloorPlan.png") 

ggimage(thePicture, fullpage = FALSE) + 
    geom_point(aes(x = theX, y = theY, colour = SomeID), 
      data = theData, size = I(5), fill = NA) + 
    labs(x='X axis', y='Y axis') 

、私のプロットが(背景画像は、単純なフロアプランです)最後に次のようになります。

データは次のようになりますPlotted image from RStudio

私の今の問題は、X軸とY軸が実際に高いスケールを持つことです。 Yは600以上、Xは400以上になりますが、データによれば、左下ではなく、「Room1」(右下)のプロットに点が表示されます。

画像のサイズを変更する方法はありますか?以下のような

何か:0〜25

から0から15の

Y軸のスケールに

X軸のスケールこののオーバーすべての目的は、より多くのデータからヒートマップをプロットすることです私は持っていて、どのIDが最も「時間」のある部屋だったかを示します。

EDIT: 私が使用している場合、このようなggimage:

ggimage(thePicture, fullpage = FALSE, scale_axes = TRUE) + 
    geom_point(aes(x = theX, y = theY, colour = SomeID), 
      data = theData, size = I(5), fill = NA) + 
    labs(x='X axis', y='Y axis') 

scale_axes = TRUEは、私の全体の画像が左下隅に縮小し、規模が12にX = 0から行きます、 Y = 0〜7.私はそれがまだそれを望む方法ではありません。

+0

私はそれがpngからのピクセルを使用していたと思います...おそらく、正しい位置に到達するために係数を使用する必要があります。 – drmariod

+0

どのように見えますか?例えば? (Rにはまだかなり新しい)。ヒントのおかげで多くの。 – BlainTheMono

+0

'theX'と' theY'をあなたの画像の寸法と同じ範囲にあるように再スケーリングするのはどうですか? –

答えて

0

必要なのは、各軸のスケーリング係数です。たとえば、あなたは、x軸は0から25まで0から15の範囲であり、y軸、結果は次のようになります言った...ちょうどあなたのPNG画像の大きさを取得するためにdimを使用

library(png) 
library(ggmap) 

thePicture <- readPNG('~/Desktop/Screen Shot 2016-12-01 at 13.03.23.png') 
y_factor <- dim(thePicture)[1]/25 
x_factor <- dim(thePicture)[2]/15 

theData <-data.frame(EntryNr = c(0001,0002,0003,0004,0005,0006,0007), 
        TimeSet = c('2017-01-15','2017-01-17','2017-01-18','2017-01-19','2017-01-20','2017-01-21','2017-01-22'), 
        SomeID = c('Mario','Mario','Mario','Luigi','Luigi','Luigi','Bowser'), 
        Room = c('Room1','Room1', 'Room1', 'Room1', 'Room1', 'Room1','Room1'), 
        theX = c(12.011, 11.767, 11.715, 11.827, 11.773,11.846,11.781), 
        theY = c(6.733, 6.698, 6.871, 6.799, 6.887, 6.327,6.577), 
        theZ = c(3, 2.958, 2.983, 2.981, 2.992,2.952,2.945)) 

ggimage(thePicture, fullpage = FALSE) + 
    geom_point(aes(x = theX * x_factor , y = theY * y_factor, colour = SomeID), 
      data = theData, size = I(5), fill = NA) + 
    labs(x='X axis', y='Y axis') 

。最初の数値はy軸で、2番目の数値はx軸です。私は第3の数字が何であるか分かりません... あなたが各軸のために言及した範囲を使用してください、これはトリックを行う必要があります。

+0

がありますので、私のシステムでは失敗します。これは私をたくさん助けました! – BlainTheMono

関連する問題