绘制邻接矩阵时定位不当-GGR PLOT
我想画一个像棋盘一样的图的邻接矩阵(黑色表示1,白色表示0,反之亦然) 使用以下代码:绘制邻接矩阵时定位不当-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 %>%
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()