Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绘制邻接矩阵时定位不当-GGR PLOT_R_Ggplot2_Plot - Fatal编程技术网

绘制邻接矩阵时定位不当-GGR PLOT

绘制邻接矩阵时定位不当-GGR PLOT,r,ggplot2,plot,R,Ggplot2,Plot,我想画一个像棋盘一样的图的邻接矩阵(黑色表示1,白色表示0,反之亦然) 使用以下代码: require(igraph) require(ggplot2) require(reshape2) g <- make_star(5) gAdjMatrix <- as.matrix(as_adj(g)) print(gAdjMatrix) logMatrix <- (gAdjMatrix == 1) logMatrix mm <- logMatrix mm %>%

我想画一个像棋盘一样的图的邻接矩阵(黑色表示1,白色表示0,反之亦然)

使用以下代码:

require(igraph)
require(ggplot2)
require(reshape2)

g <- make_star(5)
gAdjMatrix <- as.matrix(as_adj(g))

print(gAdjMatrix)

logMatrix <- (gAdjMatrix == 1)
logMatrix

mm <- logMatrix

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))
require(igraph)
需要(ggplot2)
要求(2)

g以下代码应返回您要查找的内容:

mm %>% 
  melt() %>% 
  ggplot(aes(Var2, Var1)) + 
  geom_tile(aes(fill = value, 
                color = value)) + 
  coord_equal() + 
  scale_fill_manual(values = c("TRUE" = "black", "FALSE" = "white")) + 
  scale_color_manual(values = c("TRUE" = "white", "FALSE" = "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_y_reverse()

说明:

  • 通常更安全的做法是将命名向量与
    scale\u XX\u manual
    一起使用,以确保映射正确的值
  • 默认情况下,绘图的原点位于左下角,而不是左上角。如果要从顶部开始,请反转y轴
  • 旁注:在完成对绘图中更重要的方面的调整之前,可以省略与外观相关的代码,从而在将来尽量减少此类问题。如果将轴和图例标签留在绘图中,则上述问题可能更容易发现:

    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))
    

    首先,矩阵索引和直角坐标是不同的。我制作了一个矩阵,如下所示:

    > x <- matrix(c(1, rep(0, 8)), 3, 3)
    
         [,1] [,2] [,3]
    [1,]    1    0    0
    [2,]    0    0    0
    [3,]    0    0    0
    

    您成功地将矩阵呈现给具有相同位置的热图


    因此,使用数据,您可以首先将其转换为直角坐标并绘制:

    mm2 <- t(mm)[ , ncol(mm):1]
    
    mm2 %>% 
      melt() %>% 
      ggplot(aes(Var1, Var2)) + # Don't exchange Var1 and Var2 here
      geom_tile(aes(fill = value, 
                    color = value)) + 
      coord_equal() + 
      scale_fill_manual(values = c("TRUE" = "black", "FALSE" = "white")) + 
      scale_color_manual(values = c("TRUE" = "white", "FALSE" = "black")) + 
      theme_bw()
    
    mm2%
    熔化()%>%
    ggplot(aes(Var1,Var2))+#不要在这里交换Var1和Var2
    geom_瓷砖(aes)(填充=值,
    颜色=值))+
    坐标等于()
    刻度填充手动(值=c(“真”表示“黑”,“假”表示“白”)+
    比例-颜色-手动(值=c(“真”=白”,“假”=黑”)+
    主题_bw()
    

    感谢您的回答和全面的解释!
    y <- t(x)[ , ncol(x):1]
    image(y)
    
    mm2 <- t(mm)[ , ncol(mm):1]
    
    mm2 %>% 
      melt() %>% 
      ggplot(aes(Var1, Var2)) + # Don't exchange Var1 and Var2 here
      geom_tile(aes(fill = value, 
                    color = value)) + 
      coord_equal() + 
      scale_fill_manual(values = c("TRUE" = "black", "FALSE" = "white")) + 
      scale_color_manual(values = c("TRUE" = "white", "FALSE" = "black")) + 
      theme_bw()