14

背景画像の上にデータをプロットしようとしています。問題は、両方のレイヤーが同じ縮尺を使用してしまうことです。これは残念ながら問題です。

例。

この画像の上にいくつかのデータをプロットしたいと思います。

サンプル画像

右。だから私はそれをggplotでそのようにプロットします。

img <- readJPEG("image.jpg")
image <- apply(img, 1:2, function(v) rgb(v[1], v[2], v[3]))
image <- melt(image)
ggplot(image, aes(row, -column, fill=fill)) + geom_tile() + scale_fill_identity()

そして、それはうまく機能します。それでは、上にいくつかのデータを追加しましょう。

df <- data.frame(x=sample(1:64, 1000, replace=T), 
  y=sample(1:64, 1000, replace=T))
ggplot(df, aes(x,y)) + stat_bin2d()

サンプル データをプロットすると、次のようになりますここに画像の説明を入力

したがって、このデータ プロットをグラデーション イメージの上に重ねるだけです。

ggplot(image, aes(row, -column, fill=fill)) + geom_tile() + 
  scale_fill_identity() + geom_point(data=df2, aes(x=x, y=-y))

でも結局こうなる

ここに画像の説明を入力

2 番目のフィル スケールを指定しようとすると、エラーがスローされます。これはできないと言っていますが、回避策または見落としているものがあることを願っています 。

4

1 に答える 1

21

これを試してください(またはannotation_raster)

library(ggplot2)
library(jpeg)
library(grid)

img <- readJPEG("image.jpg")

df <- data.frame(x=sample(1:64, 1000, replace=T), 
                 y=sample(1:64, 1000, replace=T))

ggplot(df, aes(x,y)) + 
  annotation_custom(rasterGrob(img, width=unit(1,"npc"), height=unit(1,"npc")), 
                    -Inf, Inf, -Inf, Inf) +
  stat_bin2d() +
  scale_x_continuous(expand=c(0,0)) +
  scale_y_continuous(expand=c(0,0)) 

スクリーンショット

于 2013-05-07T11:45:13.267 に答える