как отобразить только минимальные и максимальные значения в легенде при использовании функции image.plot - PullRequest
1 голос
/ 09 марта 2012

Я использую функцию image.plot для отображения цветной полосы с изображением. Для цветной панели я хочу отображать легенду только в граничных позициях. Однако в настоящее время я получаю тики в разных местах посередине. Более того, соответствующие значения не отображаются. Пожалуйста, см. Сегмент кода ниже:

  color_plate=c('royalblue4','springgreen4','yellow2','darkred')
    layout(matrix(c(1,1), 1, 1))
    par(mar=c(0,1,1,0))
#here image is plotted
    image(image_variable, axes=FALSE, xlab="", ylab="",col=color_plate)

   image.plot(zlim=c(min(ya),max(ya)),legend.only=TRUE,col=color_plate,
    horizontal=TRUE,legend.mar=0.4,legend.shrink=0.4,legend.width=0.4,
    axis.args = list(cex.axis = 1.5))

#here color bar is added but I am not able to generate legend values at both ends.    
#Furthermore, I wish to eliminate the tics and only need the values to be displayed.                          
# I also tried two variations within the image.plot function but no result:
#axis.args = list(cex.axis = 1.5,at=c(floor(min(ya)),ceiling(max(ya))))
#and  
#axis.args = list(cex.axis = 1.5, at=c(0.01,0.05),labels=c(0.01,0.05))

Пожалуйста, предложите подходящую модификацию в сегменте.

Спасибо заранее. Munish

1 Ответ

3 голосов
/ 09 марта 2012

Хотя я не могу привести ваш пример, я думаю, что понял, что вы имеете в виду, и я думаю, что вы можете настроить это на свой layout(..). Глядя на ?image.plot, есть пример того, что вы хотите - вы используете аргумент breaks и аргумент lab.breaks для image.plot:

# generate an image_variable for demonstration
image_variable <- array(runif(100),dim=c(10,10))
color_plate=c('royalblue4','springgreen4','yellow2','darkred')

library(fields) # for image.plot
# This puts the colour scale marks within the colour bar, not on the boundaries:
# image.plot(image_variable,col=color_plate,zlim=c(0,1),...)

zlim <- c(0,1)
# define colour breaks (they were default spaced evenly):
brks = seq(0,1,length.out=length(color_plate)+1)

# plot:
image.plot(image_variable, zlim=zlim, axes=F,
           col=color_plate, breaks=brks, lab.breaks=brks)

enter image description here

Надеюсь, это то, что вы хотели.

Если вы только хотите 0 и 1, это еще проще:

image.plot(image_variable, col=color_plate, zlim=zlim, axes=F,
       axis.args=list(at=zlim, labels=zlim))

enter image description here

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