#r #ggplot2 #dplyr #tidyverse #ggraph
Вопрос:
Я думаю, что потерял выходные, разбираясь с этой ошибкой, из-за этого я решил опубликовать свою головную боль от кода.
У меня есть эта матрица
library(tidyverse)
library(tidygraph)
library(ggraph)
library(scales)
mat <- matrix(c(10,10,0,2,5,0,1,
10,9,1,2,6,0,1,
10,9,1,1,5,1,1,
10,10,1,2,6,1,1,
10,10,2,6,7,1,1,
10,9,7,6,7,3,2,
10,10,2,6,7,1,1,
10,7,2,5,7,1,1,
10,10,2,5,7,1,1,
10,9,2,5,7,1,1,
10,10,2,6,7,1,1), nrow=11, ncol=7, byrow = TRUE)
colnames(mat) <- c(0,12,40,50,60,70,90)
rownames(mat) <- c(12,20,30,40,50,60,70,80,90,100,120)
и я строю его как двудольную сеть с помощью ggraph, а затем беру полностью искаженную/сумасшедшую ось x.
(layout <- create_layout(mat, "bipartite"))
ggraph(layout)
geom_edge_link0(aes(edge_width = weight),edge_colour = "black", alpha=0.9)
scale_edge_width(range = c(1, 10))
geom_node_point(aes(shape = type, colour = type), size = 10)
scale_colour_manual(values = c("#02BEC4", "#45BF44"))
scale_shape_manual(values = c(15, 19))
scale_x_continuous(
breaks = layout$x[!layout$type],
labels = layout$name[!layout$type],
position = "top",
sec.axis = dup_axis(
breaks = layout$x[layout$type],
labels = layout$name[layout$type],
)
)
theme(axis.text = element_text())
Почему моя ось x не может начинаться с 0?
Я хочу видеть по оси x внизу следующий порядок, 0,12,40,50,60,70,90, а не 90,12,60,50,0,40,70. Я был бы очень признателен за любую помощь в этой теме.
примечание: Большое спасибо Мартину Гэлу за его комментарий
Комментарии:
1. Я не знаю, как решить твою проблему. Имена столбцов матрицы находятся на вашей оси x. Внутри
layout
объекта они сохраняются какcharacters
, и я думаю, что в этом проблема. Вы можете изменить порядок, например , сlayout$x <- c(layout$x[1:11], 0:6)
помощью, но это не очень хорошее решение. Что именно вы пытаетесь построить, так как я пропускаю «реальные» значения внутри вашей матрицы в вашем реальном графике2. Спасибо тебе, Мартин. Я обновлю вопрос на основе вашего комментария. Я хочу видеть по оси x внизу следующий порядок: 0,12,40,50,60,70,90, а не 90,12,60,50,0,40,70. На самом деле для меня сейчас не имеет значения, как отображаются значения. Я имею в виду, что я проверил, что они хорошо нанесены, но порядок по оси x перепутан
3. В целом я пытаюсь представить, как взаимодействуют виды в разные моменты времени. У меня есть синий вид и зеленый, и я вижу, насколько синий влияет на зеленый во время 12 и т. Д… Имеет ли это смысл
4. Если вам нужны позиции по оси x
dimnames(mat)
, вы можете это сделатьlayout$x <- as.numeric(as.character(layout$name))
.5. Спасибо @teunbrand. Ты спасла мне выходные. Мне нужно глубже понять, как работают эти сетевые графики. Спасибо вам за помощь