Удаление строк в легенде fill.contour - PullRequest
5 голосов
/ 09 ноября 2011

Я мог бы упустить что-то простое здесь ... Я не могу найти пути, чтобы убрать линии, которые пересекают легенду, различая разные цвета;следуя примеру из топографии вулкана в ?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!)

Ответы [ 2 ]

9 голосов
/ 09 ноября 2011

Если вы изучите код для 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

1 голос
/ 05 августа 2014

Вам даже не нужно менять жесткий код fill.contour. Очевидно, что аргумент border в функции rect опирается на par("fg"). Просто установите par(fg = NA), чтобы удалить эти черные линии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...