Это работает для меня во всех браузерах (включая Firefox)
https://gist.github.com/jaydson/1780598
https://jsfiddle.net/sidanmor/v6m9exsw/
var myConfObj = {
iframeMouseOver : false
}
window.addEventListener('blur',function(){
if(myConfObj.iframeMouseOver){
console.log('Wow! Iframe Click!');
}
});
document.getElementById('idanmorblog').addEventListener('mouseover',function(){
myConfObj.iframeMouseOver = true;
});
document.getElementById('idanmorblog').addEventListener('mouseout',function(){
myConfObj.iframeMouseOver = false;
});
Узлом с кратчайшим путем ко всем остальным узлам будет узел с наименьшей дальностью или наивысшей центральностью близости, рассчитанный в igraph с closeness()
, см. ?closeness()
и Bavelas (1950), и вики nice страница для централизованных мер .
Ответы на три подвопроса ниже:
1) В igraph, вес равен , трение , а не смазка. См. мой недавний ответ на тот же вопрос здесь для более подробной информации
2) Я думаю центральность звучит больше как то, что вы ищем: « наименьшее суммированное расстояние до всех остальных узлов ». В вашем случае и центральность собственного вектора (которая, как мне кажется, имеет более сложную и менее интуитивную формулу) и центральность близости оставляют вас с привязанными победителями. Сравните:
eigen_centrality(lc_projected_g)$vector
closeness(lc_projected_g)
Решение о том, какой узел является правильным, если многие победители имеют одинаковое значение, на самом деле является вопросом вашего собственного суждения. Поскольку у нескольких ученых было число Эрдаса 1, Пол Эрдс использовал альтернативную формулу для наименьшего числа Эрда с 1 на k совместно опубликованных работ, чтобы присвоить наименьшее число Эрда человеку с большинством совместно опубликованных работ (k) с ему. Я подозреваю, что при воспроизведении ваших типов аффилированных сетей будут создаваться структуры с «привязанными победителями» для кратчайшего пути ко всем остальным узлам, а также в диаграммах немного большего размера, чем у вас. Возможно, вы могли бы еще раз подумать, почему вы хотите, чтобы самый центральный узел вашей перепроекции имел в виду, вернувшись к исходной двухсторонней структуре вашего графа?
3) Вы потеряли свои имена ребер, потому что перепроектированные ребра по сути не совпадают с ребрами. Радуйся, что они ушли. Однако я не могу воспроизвести какие-либо потерянные имена ребер с вашим кодом. g_graph
не имеет имен или меток, установленных для E(g)
. E(lc_projected_g)
перечисляет хорошо именованные ребра, поскольку вершины имеют правильные имена. Вы всегда можете перестроить свои собственные имена, например:
E(lc_projected_g)$label <- apply(ends(lc_projected_g, E(lc_projected_g)), 1, paste,collapse="--")
при условии, что ваши вершины уже правильно названы. Ваша проекция с bipartite_projection()
должна всегда содержать имена вершин, но не имена ребер. В вашем коде выше, они делают - по крайней мере для меня. Моя строка кода выше устанавливает метку (которая появляется при построении графика), используя paste()
, чтобы склеить имена вершинных пар каждого ребра вместе с помощью «-». Проверьте ends(lc_projected_g, E(lc_projected_g))
. Он должен перечислить именованные пары вершин в виде матрицы.
Много вопросов в одном, но хорошо работающем примере кода. Удачи.