2011-11-09 20 views
5

私はここに単純なものがありません...とにかく、異なる色を区別する凡例を横切る行を削除することはできません。 ?filled.contourで火山地形の例からに次のように、私はこれを持っている:filled.contour legend内の行を削除する

x <- 10*1:nrow(volcano) 
y <- 10*1:ncol(volcano) 

filled.contour(x, y, volcano, color = terrain.colors, 
    plot.title = title(main = "The Topography of Maunga Whau", 
    xlab = "Meters North", ylab = "Meters West"), 
    plot.axes = { axis(1, seq(100, 800, by = 100)) 
       axis(2, seq(100, 600, by = 100)) }, 
    key.title = title(main="Height\n(meters)"), 
    key.axes = axis(2, 
      labels=FALSE, 
      at=FALSE, 
      lty=NULL, 
      tick=FALSE, 
      col="white", 
      col.ticks=NULL) 
) 
mtext(paste("filled.contour(.) from", R.version.string),side = 1, line = 4, adj = 1, cex = .66) 

私はすべてのラベルを削除し、軸から-目盛りをするために管理しましたが、行はまだ、偶然に(存在しますカラーキー四角形を描画します

rect(0, levels[-length(levels)], 1, levels[-1L], col = col) 

:!あなたは、この行が表示されますfilled.contour用のコードを調べると、私が達成しようとしている効果は、(私は信じている)MATLABでのデフォルト)

答えて

8

です。ベクトル化されているので、個々のカラーボックスを描画しています。 rect関数は引数borderを受け取ります。NAに設定すると、四角形の内部境界が省略されます。だから、機能の独自のバージョンを作成して、この行を変更:

rect(0, levels[-length(levels)], 1, levels[-1L], col = col, border = NA) 

またはその引数ではなく、ハードコーディングします。あなたもfilled.contourのハードコードを変更する必要はありません

enter image description here

+0

ありがとうございます - 私はそれが複雑であることを期待していませんでした! – ChrisW

+1

@ChrisWそれは私には難しいとは思われませんが、おそらく私はそれに慣れています。 'filled.contour'のような関数の作者は、ユーザーが作りたいと思うすべての可能な調整を期待することはできません。 – joran

0

:私はこれを行うと、私は次のグラフを取得します。明らかに、関数rectの引数borderpar("fg")に依存しています。 par(fg = NA)に黒い線を取り除くだけです。

+0

残念ながら、 '' par(fg = NA) ''を設定すると、凡例と軸の区切り枠を消去します。 – epsilone

+1

これはそうですが、手動で 'borders = "black"と' col = "black"を手動で設定して戻すことができます。 –

関連する問題