具有不对称颜色渐变的 R 格子颜色
R lattice colors with asymmetric color gradient
我正在使用 R lattice()
制作 3D 线框图。表面的色标范围从 -0.6 到 +0.2。我创建了一个 blue-white-red 颜色渐变方案:
bwr.colors <- colorRampPalette(c("blue, "white", "red"))
并且正在像这样创建情节:
gca_plot <- wireframe(dev ~ col*row, data=gca,
xlab = "col",
xlim = c(1, 24),
ylab = "row",
ylim = c(9, -6),
zlim=c(-0.6, 0.2),
main = "GCA",
drape = TRUE,
colorkey = TRUE,
at=do.breaks(c(-0.6,0.2),100),
scales = list(arrows=FALSE,cex=.5, tick.number = 10, z = list(arrows=F), distance =c(1.5, 1.5, 1.5)),
col.regions = bwr.colors(100),
screen = list(z = 30, x = -60))
问题是我想将颜色(白色)居中为零,因为这是一个偏差图。我想要红色值 > 0 和蓝色值 < 0。
我知道将我的比例 运行 从 -0.6 调整到 +0.6 可以解决这个问题,但这会占用 z-axis 的 much-too-small 部分。我也知道 scale_colour_gradient2()
函数可以实现我想要的(它允许你设置中点值),但那是一个 ggplot2()
函数,我在 lattice()
因为 ggplot2()
不会像这样处理 3-D 表面(除非我遗漏了什么)。
这是我的情节。它被设计成挤在框架的一角——它是一个 13x9 的区域,将与包含 24x16 区域的不同图进行比较。
这是一种方法:
library(lattice)
bwr.colors <- colorRampPalette(c("blue", "white", "red"))
一些绘图数据:
g <- expand.grid(x = 1:10, y = 5:15)
g$z <- log(g$x^2 + g$y^2)
通过控制 at
参数中的值,例如:
c(do.breaks(c(3, 4),49), do.breaks(c(4, 6),49))
将创建 100 个值,其中前 50 个值介于 3 和 4 之间,另外 50 个值介于 4 和 6 之间
wireframe(z ~ x*y, data=g,
xlab = "col",
ylab = "row",
main = "GCA",
drape = TRUE,
colorkey = TRUE,
at = c(do.breaks(c(3, 4),49), do.breaks(c(4, 6),49)),
scales = list(arrows = FALSE,
cex = .5,
tick.number = 10,
z = list(arrows=F),
distance =c(1.5, 1.5, 1.5)),
col.regions = bwr.colors(100),
screen = list(z = 30, x = -60))
在您的情况下,您可能需要:
c(do.breaks(c(-0.6, 0),49), do.breaks(c(0, 0.2),49))
我正在使用 R lattice()
制作 3D 线框图。表面的色标范围从 -0.6 到 +0.2。我创建了一个 blue-white-red 颜色渐变方案:
bwr.colors <- colorRampPalette(c("blue, "white", "red"))
并且正在像这样创建情节:
gca_plot <- wireframe(dev ~ col*row, data=gca,
xlab = "col",
xlim = c(1, 24),
ylab = "row",
ylim = c(9, -6),
zlim=c(-0.6, 0.2),
main = "GCA",
drape = TRUE,
colorkey = TRUE,
at=do.breaks(c(-0.6,0.2),100),
scales = list(arrows=FALSE,cex=.5, tick.number = 10, z = list(arrows=F), distance =c(1.5, 1.5, 1.5)),
col.regions = bwr.colors(100),
screen = list(z = 30, x = -60))
问题是我想将颜色(白色)居中为零,因为这是一个偏差图。我想要红色值 > 0 和蓝色值 < 0。
我知道将我的比例 运行 从 -0.6 调整到 +0.6 可以解决这个问题,但这会占用 z-axis 的 much-too-small 部分。我也知道 scale_colour_gradient2()
函数可以实现我想要的(它允许你设置中点值),但那是一个 ggplot2()
函数,我在 lattice()
因为 ggplot2()
不会像这样处理 3-D 表面(除非我遗漏了什么)。
这是我的情节。它被设计成挤在框架的一角——它是一个 13x9 的区域,将与包含 24x16 区域的不同图进行比较。
这是一种方法:
library(lattice)
bwr.colors <- colorRampPalette(c("blue", "white", "red"))
一些绘图数据:
g <- expand.grid(x = 1:10, y = 5:15)
g$z <- log(g$x^2 + g$y^2)
通过控制 at
参数中的值,例如:
c(do.breaks(c(3, 4),49), do.breaks(c(4, 6),49))
将创建 100 个值,其中前 50 个值介于 3 和 4 之间,另外 50 个值介于 4 和 6 之间
wireframe(z ~ x*y, data=g,
xlab = "col",
ylab = "row",
main = "GCA",
drape = TRUE,
colorkey = TRUE,
at = c(do.breaks(c(3, 4),49), do.breaks(c(4, 6),49)),
scales = list(arrows = FALSE,
cex = .5,
tick.number = 10,
z = list(arrows=F),
distance =c(1.5, 1.5, 1.5)),
col.regions = bwr.colors(100),
screen = list(z = 30, x = -60))
在您的情况下,您可能需要:
c(do.breaks(c(-0.6, 0),49), do.breaks(c(0, 0.2),49))