1

ベースプロット関数を使用して非常に小さな折れ線グラフを作成しようとしましたが、細い境界線を追加しようとするとうまくいきません。

これは Windows 7 の RGui 経由で、プロット ウィンドウから png を保存します。

これが私のコードです:

dev.new(width=1.3,height=0.3)
par(mar=c(0,0,0,0))

set.seed(13)
x <- 1:10
y <- runif(10)

plot(x,y,type="n",xaxs="i",yaxs="i",ylim=c(0,1))
polygon( c(1,x,max(x),0), c(0,y,0,0), col="lightblue", border=NA)
lines(x,y,lwd=1)

線幅1のボックスを追加しようとするまで、すべて問題ありません。次のようになります。

box(lwd=1)

ここに画像の説明を入力

線幅を 2 ​​に増やすことでこれを解決できるようになりましたが、これは少しハックのようです。

box(lwd=2)

ここに画像の説明を入力

rectlikeを使用rect(1,0,10,1) しても、下と右の境界線が表示されないため、適切な解決策が得られないようです。

4

3 に答える 3

1

mar にゼロ以外の小さな値を与えることを検討しましたか:

dev.new(width=0.3,height=0.3)
par(mar=c(0.01,0.01,0.01,0.01))

set.seed(13)
x <- 1:10
y <- runif(10)

plot(x,y,type="n",xaxs="i",yaxs="i",ylim=c(0,1))
polygon( c(1,x,max(x),0), c(0,y,0,0), col="lightblue", border=NA)
lines(x,y,lwd=1)

box(lwd=1)

エンドゲームがどうなるかはよくわかりませんが、その非常に小さな画面オブジェクトのインタラクティブな「ストレッチ」を行うと、全周の境界線が生じます。

ここに画像の説明を入力

私は Mac を使用しており、これを pdf ファイルに保存し、SO を含めるために png ファイルに変換すると、Linux または Windows デバイスでは正確に再現できない可能性があることを認識しています。

于 2013-07-25T01:11:28.980 に答える
1

gridおよびgridBaseパッケージ内の別のソリューション ベース。アイデアは、を置き換えることboxですgrid.rect

  1. ビューポートgridBaseを取得するために使用しますbase
  2. いくつかのオフセット (ビューポート y ) を導入して、最終的な行を表示します
  3. ビューポートの幅を縮小して、正しい線を表示します。

ここに私のコード:

library(gridBase)
sp <- baseViewports()
vp <- sp$plot
vp$width <- unit(0.999,'npc')
vp$y <- unit(0.001,'npc')
pushViewport(vp)
grid.rect(gp=gpar(fill=NA))
upViewport(1)

ここに画像の説明を入力

編集@baptiste のおかげで、以下のみを使用して同じ結果を簡単に得ることができますgrid.rect

library(grid)
grid.rect(width = unit(0.999,'npc'),
          y = unit(0.5001, "npc"),
          gp=gpar(fill=NA))
于 2013-07-25T01:28:10.833 に答える