【问题标题】:Saturate a level plot to increase contrast at lower levels使水平图饱和以增加较低水平的对比度
【发布时间】:2018-02-22 15:01:43
【问题描述】:

给定一个如下所示的数据集:

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 中做到?

【问题讨论】:

    标签: r plot heatmap lattice levelplot


    【解决方案1】:

    您可以使用colorkeyat 来执行此操作:

    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)
    

    【讨论】:

    • 这似乎只是改变了颜色条,而不是实际的情节。所以我看不到实际情节中对较低数字的强调。如果我包含“col.regions =colorRampPalette(c('blue','red')),at=seq(0,20, length.out=120))”这一行,我仍然会看到绘图上的空白区域。我的目标是拥有相同的情节,但所有现在空白的区域都是相同的最大红色)
    • 你是对的。忘记指定at 参数。我更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多