В настоящее время я пытаюсь отобразить круговой график в R с возможностью размещения меток каждого узла рядом с ним, но вне его.Свободно размещающие метки вершин за пределами вершин для кругового графа в R
Я посмотрел на несколько ответов, и попробовал один, который предложил, чтобы я указать места, указанные в радианах для каждого самого узла с помощью:
radian.rescale <- function(x, start=0, direction=1) {
c.rotate <- function(x) (x + start) %% (2 * pi) * direction
c.rotate(scales::rescale(x, c(0, 2 * pi), range(x)))
}
lab.locs <- radian.rescale(x=1:n, direction=-1, start=0)
plot(sev, layout=la, vertex.size=25, vertex.label.dist=5,
vertex.label.degree=lab.locs, vertex.label.color="black")
И это в основном работал, но лейблы не были точно размещены в желание (не большая проблема), но я не мог настроить размер шрифта с помощью cex (что в конечном итоге было достаточно большой проблемой, и я решил искать другие методы).
Посмотрев еще несколько ответов, которые я смог найти, что существует следующая команда: текст («метки», локатор (1)) , который, как предполагается, позволит интерактивно поместить текст с указателем мыши. Однако, когда я бегу, я получаю следующее сообщение об ошибке:
In xy.coords(x, y, recycle = TRUE) : NAs introduced by coercion
Я просто пытаюсь сделать это для окружности графа с семью и восемью узлами соответственно, так вот что я бегу, чтобы проверить его с семью узлами:
##testing graph labeling
library(igraph)
library(ggplot2)
library(scales)
##making a 7-node circle graph
sev=make_graph(c(1,2, 2,3, 3,4, 4,5, 5,6, 6,7, 7,1))
sev=as.undirected(sev)
#relabel specific nodes blue
j=1;#index of vertex to start coloring
V(sev)$color="white"; #Need to default to white, otherwise will color all blue
V(sev)$color[(j)%%7]="dodgerblue";
V(sev)$color[(j+1)%%7]="dodgerblue";
V(sev)$color[(j+2)%%7]="dodgerblue";
la<-layout.circle(sev)
plot(sev)
text("label",locator(1))
Я заранее прошу прощения за любые трудности, форматирования, я, вероятно, изменить вопрос, чтобы настроить их.
Это не выглядит, как у вас есть параметры для 'текста()' в правильной форме и порядке. Что относительно 'with (locator (1), text (x, y," label "))'. Это помогло бы обеспечить [воспроизводимый пример] (http://stackoverflow.com/questions/19226816/how-can-i-view-the-source-code-for-a-function) для вашей первой попытки. Прямо сейчас «lab.locs» не определяется, если мы используем данные из – MrFlick
Или еще в духе вашего кода «text (локатор (1),« label »)' У вас были только аргументы в неправильном порядке. – G5W
Благодарим вас, оба этих решения являются жизнеспособными способами решения моих проблем! – BLP92