2011-11-09 58 views
5

我可能會在這裏丟失一些簡單的東西......我無法找到任何方法去除跨越圖例區分不同顏色的線條;在?filled.contour以下的從火山地貌例子,我有這樣的:刪除filled.contour圖例中的線條

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) 

我已經成功地從軸刪除所有的標籤和刻度的標誌,但線條仍然存在(順便說一句,我想達到的效果是(我相信)在Matlab默認)

回答

8

如果您檢查filled.contour你會看到這行代碼:

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

繪製顏色鍵矩形。它是矢量化的,所以它繪製了每個單獨的顏色框。函數rect接受參數border,如果設置爲NA,則會省略矩形的內部邊界。因此,創建您自己的函數版本,並將此行更改爲:

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

或使其成爲參數,而不是硬編碼。當我這樣做,我得到如下圖:

enter image description here

+0

謝謝 - 雖然我並沒有期待它那麼複雜! – ChrisW

+1

@ChrisW對我來說這似乎並不複雜,但也許我已經習慣了。諸如「filled.contour」之類的函數的作者無法預測用戶可能想要調整的任何可能的調整。 – joran

0

你甚至都不需要改變filled.contour硬編碼。顯然,函數rect中的參數border依賴於par("fg")。只需設置par(fg = NA)即可刪除這些黑線。

+0

不幸的是,如果你設置了''par(fg = NA)'',你將會消除圖例和座標軸上的分界線。 – epsilone

+1

因此情況是這樣,但您可以隨時手動設置'邊框=「黑色」'和'col =「黑色」'以使其恢復。 –