使水平图饱和以增加较低水平的对比度
Saturate a level plot to increase contrast at lower levels
给定一个如下所示的数据集:
D<-rep(seq(1,5),10)
T<-runif(50,1,20)
S<-c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10)
DF<-data.frame(D,T,S)
我使用下面的代码制作了一个水平图
library(lattice)
levelplot(T ~ S * D, data = DF,ylim=c(5,1),
xlab = "T", ylab = "S",
main = "LevelPlot", aspect=0.4,
col.regions =colorRampPalette(c('blue','red')),at=seq(0,20, length.out=120))
我想通过增加颜色对比度来关注数据低端(T 变量)的细微差异。我能够做到这一点的一种方法是更改 "seq" 参数以关注 0-5:
范围内的数据
levelplot(T ~ S * D, data = DF,ylim=c(5,1),
xlab = "T", ylab = "S",
main = "LevelPlot", aspect=0.4,
col.regions =colorRampPalette(c('blue','red')),at=seq(0,5, length.out=120))
现在对比度是我想要的,但我不喜欢 5-20 之间的所有数据都被遮挡了。在其他绘图程序中,我已经能够使上限饱和,以便所有高于特定值的数据都由单一(最大)颜色表示。在这种情况下,所有高于 5 的值都是红色的(右边的色标会反映这一点)。允许在 0-5 值的色标中进行更详细的对比。
这在 R 中如何实现?
您可以使用 colorkey
和 at
来执行此操作:
my.brks <- seq(0, max(T), by = 3)
my.at <- c(0, 1, 2, 3, 4, 5, round(max(T), 0))
myColorkey <- list(at = my.brks, labels = list(at = my.brks, labels = my.at))
levelplot(
T ~ S * D,
data = DF,
ylim = c(5, 1),
xlab = "T",
ylab = "S",
aspect = 0.4,
at = my.at,
col.regions = colorRampPalette(c('blue', 'red')),
colorkey = myColorkey
)
library(latticeExtra)
levelplot(
T ~ S * D,
data = DF,
ylim = c(5, 1),
xlab = "T",
ylab = "S",
aspect = 0.4,
at = my.at,
col.regions = colorRampPalette(c('blue', 'red')),
colorkey = myColorkey
) + layer(panel.text(S, D, round(T, 1)), data = DF)
给定一个如下所示的数据集:
D<-rep(seq(1,5),10)
T<-runif(50,1,20)
S<-c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10)
DF<-data.frame(D,T,S)
我使用下面的代码制作了一个水平图
library(lattice)
levelplot(T ~ S * D, data = DF,ylim=c(5,1),
xlab = "T", ylab = "S",
main = "LevelPlot", aspect=0.4,
col.regions =colorRampPalette(c('blue','red')),at=seq(0,20, length.out=120))
我想通过增加颜色对比度来关注数据低端(T 变量)的细微差异。我能够做到这一点的一种方法是更改 "seq" 参数以关注 0-5:
范围内的数据levelplot(T ~ S * D, data = DF,ylim=c(5,1),
xlab = "T", ylab = "S",
main = "LevelPlot", aspect=0.4,
col.regions =colorRampPalette(c('blue','red')),at=seq(0,5, length.out=120))
现在对比度是我想要的,但我不喜欢 5-20 之间的所有数据都被遮挡了。在其他绘图程序中,我已经能够使上限饱和,以便所有高于特定值的数据都由单一(最大)颜色表示。在这种情况下,所有高于 5 的值都是红色的(右边的色标会反映这一点)。允许在 0-5 值的色标中进行更详细的对比。
这在 R 中如何实现?
您可以使用 colorkey
和 at
来执行此操作:
my.brks <- seq(0, max(T), by = 3)
my.at <- c(0, 1, 2, 3, 4, 5, round(max(T), 0))
myColorkey <- list(at = my.brks, labels = list(at = my.brks, labels = my.at))
levelplot(
T ~ S * D,
data = DF,
ylim = c(5, 1),
xlab = "T",
ylab = "S",
aspect = 0.4,
at = my.at,
col.regions = colorRampPalette(c('blue', 'red')),
colorkey = myColorkey
)
library(latticeExtra)
levelplot(
T ~ S * D,
data = DF,
ylim = c(5, 1),
xlab = "T",
ylab = "S",
aspect = 0.4,
at = my.at,
col.regions = colorRampPalette(c('blue', 'red')),
colorkey = myColorkey
) + layer(panel.text(S, D, round(T, 1)), data = DF)