ggplot2-将分割线添加到矩阵图中

时间:2018-08-29 04:24:01

标签: r ggplot2

我想修改以下ggplot(取自this question,并对其进行修改),以使其显示出正方形之间的清晰分隔线。

我有这个:

enter image description here

我想要这个:

enter image description here

SELECT temp.col1, temp.col2, temp.col3 
FROM
SELECT 
    col1, col2,col3,
    ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS rowNum
FROM Table1 AS temp;
WHERE temp.rowNum > 4;

2 个答案:

答案 0 :(得分:2)

您可以通过将color映射到fill之外的值来获得大部分信息。

唯一的问题是黑色正方形的外边界是白色的。要删除此错误,可以修改轴扩展,以便面板边框创建黑线。

mm %>% 
  melt() %>% 
  ggplot(aes(Var2, Var1)) + 
    geom_tile(aes(fill = value, 
                  color = value)) + 
    coord_equal() + 
    scale_fill_manual(values = c("black", "white")) + 
    scale_color_manual(values = c("white", "black")) + 
    theme_bw() +
    theme(axis.title = element_blank(),
          axis.text = element_blank(),
          axis.ticks = element_blank(),
          panel.grid = element_blank()) + 
    guides(fill = FALSE, color = FALSE) + 
    scale_x_discrete(expand = c(0,0)) + 
    scale_y_discrete(expand = c(0,0))

enter image description here

答案 1 :(得分:2)

我喜欢@neilfws答案。但是,我认为白色或黑色瓷砖周围不同颜色边框的出现实际上是由眼睛看到对比度的方式引起的错觉。因此,这是另一种选择-仅在所有图块周围使用灰色边框:

ggplot(melted, aes(x = Var2, y = Var1, fill = value)) +
  geom_tile(color='gray50') +
  scale_fill_manual(values = c("white", "black")) +
  theme_bw() +
  theme(legend.position = "none",
        axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank(),
        axis.title.y=element_blank(),
        axis.text.y=element_blank(),
        axis.ticks.y=element_blank(),
        panel.grid = element_blank(),
        panel.border = element_blank())

enter image description here