我有一个矩阵,我用image(matrix)做了一个图像。有没有办法添加一个传奇的颜色到我的形象,就像我这样做时,添加一个传奇的情节?
image(matrix)
bvhaajcl1#
或者图例可以这样提供:
legend(grconvertX(0.5, "device"), grconvertY(1, "device"), c("0",".5","1"), fill = colMap[c(1, 10, 20)], xpd = NA)
其中grconvertX()和grconvertY()和xpd确保图例在绘图区域之外。一个合理的例子是:
nsamples <- 20 mat <- rnorm(nsamples, .5, .15) dim(mat) <- c(4, 5) colMap <- colorRampPalette(c("red","white","blue" ))(nsamples) image(1:4, 1:5, mat, col = colMap, ylab="", xlab="") legend(grconvertX(0.5, "device"), grconvertY(1, "device"), c("0",".5","1"), fill = colMap[c(1, 10, 20)], xpd = NA)
p. s.:我知道这是一个旧的请求,它已经解决了。我一直在寻找一个类似的答案,却找不到。既然我不想解决这个问题,我想也许其他人也可以从中受益。
uklbhaso2#
image在R中是一个相当基本的绘图函数。如果你想要一个自动为图例分配空间的函数,你可能想看看filled.contour。或者试试这个:
image
filled.contour
library(lattice) levelplot(matrix)
l7mqbcuq3#
从fields包中,您可以尝试image.plot。此函数基于常规image,但它提供了图例。
fields
image.plot
library(fields) x = 1:10 y = 1:15 z = outer( x,y,"+") image.plot(x, y, z)
tag5nh1u4#
要制作渐变色条,您可以这样做:
# make example data and color key x <- matrix(data = sample(x = 5:85, size = 100, replace = T), nrow = 10) n.colors <- 90 color.fun <- colorRampPalette(colors = c("magenta2", "grey"), bias = 10) col.key <- data.table("color" = color.fun(n = n.colors), "value" = seq(from = min(x), to = max(x), along.with = 1:n.colors)) # make the plot with image- leaving space for legend using fig par(fig = c(0,.9,0,1), mar = c(2,2,2,0)) image(z = t(x), axes = F, ann = F, col = col.key$color) # add the legend par(fig = c(.9,1,.3,.7), mar = c(1,1,1,2.5), new = T) plot(x = rep(1,length(col.key$value)), y = col.key$value, xlim = c(0,1), col = col.key$color, type = "n", xaxs = "i", yaxs = "i", ann = F, axes = F) segments(x0 = 0, x1 = 1, y0 = col.key$value, y1 = col.key$value, col = col.key$color, lwd = 5) axis(side = 4,lwd = 0, las = 2, line = -.75) mtext(text = "Legend", adj = 0, line = 1, cex = 1.2)
请注意,这也解决了我认为HelloWorld的答案中的一个错误,因为您希望颜色在颜色条和图像之间精确Map(因此比例必须与实际数据值匹配)。
4条答案
按热度按时间bvhaajcl1#
或者图例可以这样提供:
其中grconvertX()和grconvertY()和xpd确保图例在绘图区域之外。一个合理的例子是:
p. s.:我知道这是一个旧的请求,它已经解决了。我一直在寻找一个类似的答案,却找不到。既然我不想解决这个问题,我想也许其他人也可以从中受益。
uklbhaso2#
image
在R中是一个相当基本的绘图函数。如果你想要一个自动为图例分配空间的函数,你可能想看看filled.contour
。或者试试这个:l7mqbcuq3#
从
fields
包中,您可以尝试image.plot
。此函数基于常规image
,但它提供了图例。tag5nh1u4#
要制作渐变色条,您可以这样做:
请注意,这也解决了我认为HelloWorld的答案中的一个错误,因为您希望颜色在颜色条和图像之间精确Map(因此比例必须与实际数据值匹配)。