の洗練されたインポートと描画の能力をgrImport
の素晴らしいグラフ作成の能力と組み合わせることができることを望んでいますが、私は単にシステムを十分にggplot2
理解していないため、私が望むものを達成するためのエレガントな方法を見つけることができません。グラフのx軸の目盛りラベルを、を使用してインポートされた画像grid
に置き換えたいと思います。ggplot2
grImport
どちらのパッケージも関数を使用するので、フレームワーク内でgrid
使用する方法があることを望んでいます。これは理想的ですが、少なくともデバイスの既存のプロットで使用することもできます。そのようなことについてより多くの知識を持っている人は、これを行うための強力な方法を知っていますか?または、グロブやビューポートなどについて学ぶのに役立つ詳細情報を誰かに教えてもらえますか?グリッドグラフィックモデルに関するPaulMurrelのRグラフィックブックの無料の章を読みましたが、リンクを作成するためのggplot2の内部動作については十分に理解していません。grid.symbols()
ggplot2
私の質問は、画像をプロットポイントとして使用することに関する既存の質問と非常に似ていますが、プロットポイントよりも軸ラベルに関心があります。ただし、2つのタスクがどれほど類似しているか、およびそのソリューションをこの目的に適合させることができるかどうかについては、興味があります。私はそれを自分で理解することができませんでした。
これは私の最初の投稿なので、画像を投稿することは許可されていませんが、このコードは私が望むものに近いものを実現しています。注:このアプローチでは、移植性がなく、不十分な醜い醜いハックを使用します。私が作成したい最終的なプロットにはファセット( )があり、x軸は各軸の目盛りで異なる画像をfacet_grid
持つ因子であり、連続変数ではありません。そのため、より一般的で堅牢なソリューションを探しています。多くの試行錯誤を必要としません。
library(ggplot2)
## library(grImport) # not needed for this example, but would be for grid.symbols()
p <- ggplot(mtcars, aes(cyl, mpg)) + stat_summary(fun.data = "mean_cl_boot")
print(p)
## Replace (in this case, overlay) x-axis tick labels with a graphic / grob
iconSize <- 0.05
iconHt <- 0.2
padding <- 0.09 # horizontal padding around axis: I found this by trial & error
tickSp <- (1-padding)/(4*2)
downViewport("axis_h-5-3")
## I would use grid.symbols() with an imported Picture in place of grid.circle(),
## but the idea is the same: draw a shape at the ticks along the axis.
for (i in 0:(max(mtcars$cyl) - min(mtcars$cyl)) )
{
grid.circle(x = (padding/2 + tickSp*(i*2)), y = iconHt,
r = iconSize*(min(mtcars$cyl)+i), gp = gpar(fill="black"))
}
upViewport()