首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使级别图饱和以增加较低级别的对比度

使级别图饱和以增加较低级别的对比度
EN

Stack Overflow用户
提问于 2018-02-22 23:01:44
回答 1查看 442关注 0票数 0

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

代码语言:javascript
复制
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)

我使用下面的代码制作了一个水平图

代码语言:javascript
复制
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范围内的数据:

代码语言:javascript
复制
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中怎么可能做到呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-03 02:56:13

您可以使用colorkeyat来完成此操作:

代码语言:javascript
复制
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
)

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48930597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档