Web结构可视化中的边标签

4

我一直在使用Mathematica的可视化和网络爬取功能进行探索。在现有示范代码的基础上,我能够可视化网络。以下是一个大学网页的示例:

webcrawler[rooturl_, depth_] :=
  Flatten[Rest[NestList[
       Union[Flatten[Thread[# -> Import[#,"Hyperlinks"]] & /@ Last /@ #]] &, 
       {"" -> rooturl}, depth]]];

Graph[webcrawler[
  "http://www.yorku.ca/", 2], {ImageSize -> Full}]

然而,我一直在努力寻找一种方法将EdgeLabels[]应用于该Graph[]命令,但一直没有成功。我希望每个链接都写在每一行上,以便更清楚地了解链接聚类表示的内容。

我尝试将生成的超链接连接列表应用到它上面,但这并没有起作用,也没有从文档/Stack/菜谱中找到任何明显的命令。

我设想输出结果会非常混乱。


你的代码缺少了一个左大括号 { ,我不确定是否修正正确,请检查一下。 - rcollyer
我运行了你的代码(使用@rcollyer的修改),你的图表非常混乱,我怀疑任何标签都没有用。 - Dr. belisarius
@rcollyer,现在我的系统上它正在工作。抱歉,在将其粘贴到系统中时可能出了问题。感谢您发现了这个错误。 - canadian_scholar
@belisarius 这个界面有点混乱,但对于我的特定应用非常有帮助。但如果其他人想要走这条疯狂的路线,肯定需要提醒一下这个非常重要和有帮助的条件... - canadian_scholar
@ian 我想一个网站的有意义的映射需要其他方法。 - Dr. belisarius
2个回答

6

我不知道在大图的情况下边缘标签会是什么样子。但是在Mathematica 8中可以这样做。

webcrawler[rooturl_, depth_] := 
Flatten[Rest[
NestList[
 Union[Flatten[
    Thread[# -> Import[#, "Hyperlinks"]] & /@ 
     Last /@ #]] &, {"" -> rooturl}, depth]]];
dats = webcrawler["http://www.uni-kl.de/", 2];
Graph[dats ,EdgeLabels ->Table[dats[[i]] -> dats[[i]][[2]],
{i,Length[dats]}], {ImageSize -> Full}]

我希望这可以帮到你。祝好!
敬礼

非常好 - 非常感谢。信不信由你,这对我很有帮助。 - canadian_scholar
1
最后一行中的变量el似乎未定义。 - Sjoerd C. de Vries

6

EdgeLabels放在Tooltip

以下代码会在提示框中显示边和节点的名称。(当然,你可以删除VertexLabels。我包含它们是因为EdgeLabels通常非常长。)

data = webcrawler["http://www.yorku.ca/", 2];
Graph[data,
   EdgeLabels -> Placed["Name", Tooltip],
   EdgeShapeFunction -> "Line",
   VertexLabels -> Placed["Name", Tooltip], 
   EdgeStyle -> {Orange},
   VertexSize -> {"Scaled", 0.007},
   ImageSize -> 800]

这对于浏览网络应该是有帮助的。但当然,它不会打印标签。


EdgeLabels -> Placed["Name", Tooltip] 是一种替代方案,可以避免在屏幕上同时显示所有边缘标签的问题。 - DavidC
这是一个非常有用的替代方案 - 太棒了! - canadian_scholar
我也考虑过使用工具提示。我的实现方式使用了Graph [Tooltip [#,#[[2]]]&/@data]。当时不知道还有这个“Placed”选项。 - Sjoerd C. de Vries
@SjoerdC.deVries 从版本8开始,有许多小好处等待与图形一起使用。我想使用NeighborhoodGraph制作一个网络窗口,但发现这有点复杂。 - DavidC
@Belisarius 很好。而且非常熟悉。但是由于某种原因,边缘的弹出窗口总是为空。(顺便说一下,我在使用“网络爬虫”数据时与NeighborhoodGraph的问题很奇怪:由于某种原因,mma在使用URL数据时不会返回图形。 不确定为什么。) - DavidC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接