2017-11-24 4 views
1

this answerを調べているときに、ggimageパッケージからgeom_image()経由でイメージストリップを描画しようとしましたが、動作させることができませんでした。 geom_image()は画像のアスペクト比を変更し、それを防止する方法(または可能性もあります)を知りません。 sizeがどのような単位で測定されるかは、私には明らかではありません。コードがどのように振る舞うかは、おそらく、npcの座標は、ggplot2座標系に関係なく、0から1まで実行されていますか?イメージのアスペクト比を維持するためにggimageパッケージからgeom_image()を作成できますか?

require(ggimage) 
df_img <- data.frame(phase = c("Interphase", "Prophase", "Metaphase", "Anaphase", "Telophase"), 
        image = c("http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_interphase.jpg", 
           "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_prophase.jpg", 
           "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_metaphase2.jpg", 
           "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_anaphase2.jpg", 
           "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_telophase.jpg")) 
df_img$phase <- factor(df_img$phase, levels=df_img$phase) 

ggplot(df_img, aes(x = phase, y = 0, image = image)) + geom_image(size = 0.18) 

そして、これは、結果として得られる画像である:ここで

は、私が使用したコードです

enter image description here

:これは、イメージがどのように見えるかです

enter image description here

注:これはキューです特にggimageの動作に関するものです。私は、他のアプローチを使って正しいイメージを生成する方法を知っています。カウプロットからdraw_image()を使用してください。

答えて

2
ggplot(df_img, aes(x = phase, y = 0.25, image = image)) + 
    geom_image(size = 0.5, by="height")+ 
    scale_size_identity() 

byが指定されている場合、サイズがマッピングされ、NPCとして解釈データ空間において、いずれかの幅または高さ、およびアスペクト比は、現在のデバイスのために維持される

enter image description here

を生成します(サイズ変更後ではありません)。サイズがInfの場合、画像はパネル全体を埋めるように伸びます。

+0

日時:URLから画像を読み取る:私は両方のアプローチはメリットがあると思います。ポイントの代わりにイメージを使用したい場合は、同じイメージを複数回描画し、毎回悪くなるたびにイメージを再読み込みします。しかし、プロットに少数の画像を追加するだけの場合は、ここでは値を画像ファイルにマップする別のスケールを設定するようにユーザーに依頼するのは非常に複雑です。 –

+0

私は「サイズ変更していない」というあなたの声明を受け取ります。私の質問に対する答えは「いいえ」です。したがって、私は先に進んであなたの答えを受け入れます。 –

0

ではなく、 "生の" 解決策:

p <- ggplot(df_img, aes(x = phase, y = 0, image = image)) + 
    geom_image(size = 0.18) + coord_fixed() 

g <- ggplotGrob(p) 
for (k in 1:length(g$grobs[[6]]$children[[3]]$children)) { 
    g$grobs[[6]]$children[[3]]$children[[k]]$height <- unit(0.8,"native") 
} 
library(grid) 
grid.draw(g) 

enter image description here

関連する問題