4

x 軸に対数スケールの図があります。はめ込み図を作成しようとしてもうまくいきませんが、スケールを線形に変更すると問題ないようです。これを回避する方法はありますか、それともggplotの制限ですか?

これは機能します:

p = qplot(1:10, 1:10)
g = ggplotGrob(qplot(1, 1))
p + annotation_custom(grob = g, xmin = 3, xmax = 6, ymin = 6, ymax = 10)

これはしません:

p = qplot(1:10, 1:10, log='x')
g = ggplotGrob(qplot(1, 1))
p + annotation_custom(grob = g, xmin = 3, xmax = 6, ymin = 6, ymax = 10)
4

3 に答える 3

6

対数スケールでは、絶対値ではなく指数を使用して座標を指定します。したがって、この例では、スケールが 1e0 から 1e1 まで実行されるため、0 < x < 1 を使用します。

p = qplot(1:10, 1:10, log='x')
g = ggplotGrob(qplot(1, 1))
p + annotation_custom(grob = g, xmin = 0.3, xmax = 0.9, ymin = 6, ymax = 10)
于 2013-11-29T09:59:05.900 に答える
3

まず、ggplot2 を使用して対数スケールの挿入プロットを描画する際にも問題があります。

ただし、グリッド パッケージのビューポートを使用する前にいくつかの作業を行いました。

の説明viewport:

These functions create viewports, which describe rectangular regions on a graphics device and define a number of coordinate systems within those regions.

基本的に、あるプロットを別のプロットに重ねたり、別のプロットに重ねたりすることができます...

(1) コマンドのコメントを外すと、簡単に png に出力したり、使用したりできますdev.copy2**

(2) x、y、幅、高さをunitオブジェクトとして指定できます。grid::unit の詳細については、ここをクリックしてください。

require(grid)
require(ggplot2)
p = qplot(1:10, 1:10, log="x")
g = qplot(0.1 , 0.1)
vp1 <- viewport(width = 0.3, 
               height = 0.3, 
               x = 0.4, 
               y = 0.7)
vp2 <- viewport(width = 0.3, 
               height = 0.3, 
               x = 0.8, 
               y = 0.3)
#png("text.png")
print(p)
print(g, vp = vp1)
print(g, vp = vp2)
#dev.off()

ビューポート

于 2013-11-28T17:08:42.467 に答える