我正在使用R晶格封装中的水平图。我得到的图看起来如下图所示。

我现在的问题是我需要生成黑白版本进行打印。

有没有一种方法可以将颜色更改为灰度,并为矩形提供背景图案,从而使红色曾经与蓝色可以区分?例如,会想到点或对角破折号。

谢谢!

最佳答案

我找到了一种手动绘制到levelplot面板中并在所有大于0.5的单元格上绘制对角填充图案的方法

但是,我无法在颜色键图例中绘制相同的图案。在阅读了几个小时的论坛并尝试了解晶格源代码后,我一无所知。也许其他人可以解决这个问题。这是我得到的:

library(lattice)
library(RColorBrewer)
cols <- colorRampPalette(brewer.pal(8, "RdBu"))

data <- Harman23.cor$cov

fx <- fy <- c()
for (r in seq(nrow(data)))
  for (c in seq(ncol(data)))
  {
    if (data[r, c] > 0.5)
    {
      fx <- c(fx, r);
      fy <- c(fy, c);
    }
  }

diag_pattern <- function(...)
{
  panel.levelplot(...)
  for (i in seq(length(fx)))
  {
    panel.linejoin(x = c(fx[i],fx[i]+.5), y= c(fy[i]+.5,fy[i]), col="black")
    panel.linejoin(x = c(fx[i]-.5,fx[i]+.5), y= c(fy[i]+.5,fy[i]-.5), col="black")
    panel.linejoin(x = c(fx[i]-.5,fx[i]), y= c(fy[i],fy[i]-.5), col="black")
  }
}

p <- levelplot(data, scales=list(x=list(rot=45)),
               xlab="", ylab="", col.regions=cols, panel=diag_pattern)
print(p)

关于r - 在晶格图中使用添加/代替背景颜色的图案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9415344/

10-12 19:00