24小时热门版块排行榜    

CyRhmU.jpeg
查看: 105  |  回复: 0
当前主题已经存档。

zhiyucn

铜虫 (初入文坛)

[交流] 【讨论】关于显示边方向的讨论

各位虫友好,想跟大家讨论一个问题。我现在有一个5x5的格子结构的正方形,利用以下2各语句就可以显示图形,并且每个节点之间都有箭头来表示方向。

Picture = GridGraph[6, 6]
ShowGraph[Picture, VertexNumber -> True, EdgeDirection -> True]

我现在比如说想要把节点(15,16)和(21, 27)之间的箭头方向反过来显示。通过以下语句实现。

In[32]:= a = Edges[Picture]  (列出所有边的组合)

Out[32]= {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}, {7, 8}, {8, 9}, {9,
  10}, {10, 11}, {11, 12}, {13, 14}, {14, 15}, {15, 16}, {16,
  17}, {17, 18}, {19, 20}, {20, 21}, {21, 22}, {22, 23}, {23,
  24}, {25, 26}, {26, 27}, {27, 28}, {28, 29}, {29, 30}, {31,
  32}, {32, 33}, {33, 34}, {34, 35}, {35, 36}, {1, 7}, {2, 8}, {3,
  9}, {4, 10}, {5, 11}, {6, 12}, {7, 13}, {8, 14}, {9, 15}, {10,
  16}, {11, 17}, {12, 18}, {13, 19}, {14, 20}, {15, 21}, {16,
  22}, {17, 23}, {18, 24}, {19, 25}, {20, 26}, {21, 27}, {22,
  28}, {23, 29}, {24, 30}, {25, 31}, {26, 32}, {27, 33}, {28,
  34}, {29, 35}, {30, 36}}

我手工把边(15,16)和(21, 27) 的位置调换成(16,15)和(27, 21),以便让他能够反方向显示。

In[34]:= b = {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}, {7, 8}, {8,
   9}, {9, 10}, {10, 11}, {11, 12}, {13, 14}, {14, 15}, {16, 15} ,{16,
    17}, {17, 18}, {19, 20}, {20, 21}, {21, 22}, {22, 23}, {23,
   24}, {25, 26}, {26, 27}, {27, 28}, {28, 29}, {29, 30}, {31,
   32}, {32, 33}, {33, 34}, {34, 35}, {35, 36}, {1, 7}, {2, 8}, {3,
   9}, {4, 10}, {5, 11}, {6, 12}, {7, 13}, {8, 14}, {9, 15}, {10,
   16}, {11, 17}, {12, 18}, {13, 19}, {14, 20}, {15, 21}, {16,
   22}, {17, 23}, {18, 24}, {19, 25}, {20, 26}, {27, 21},{22,
   28}, {23, 29}, {24, 30}, {25, 31}, {26, 32}, {27, 33}, {28,
   34}, {29, 35}, {30, 36}}

Out[34]= {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}, {7, 8}, {8, 9}, {9,
  10}, {10, 11}, {11, 12}, {13, 14}, {14, 15}, {16, 15}, {16,
  17}, {17, 18}, {19, 20}, {20, 21}, {21, 22}, {22, 23}, {23,
  24}, {25, 26}, {26, 27}, {27, 28}, {28, 29}, {29, 30}, {31,
  32}, {32, 33}, {33, 34}, {34, 35}, {35, 36}, {1, 7}, {2, 8}, {3,
  9}, {4, 10}, {5, 11}, {6, 12}, {7, 13}, {8, 14}, {9, 15}, {10,
  16}, {11, 17}, {12, 18}, {13, 19}, {14, 20}, {15, 21}, {16,
  22}, {17, 23}, {18, 24}, {19, 25}, {20, 26}, {27, 21}, {22,
  28}, {23, 29}, {24, 30}, {25, 31}, {26, 32}, {27, 33}, {28,
  34}, {29, 35}, {30, 36}}

In[42]:= Picuture1 = ChangeEdges[Picture, b](用新的边的组合做出一个新的图)

然后用下面的语句将图显示出来。
ShowGraph[Picuture1 , VertexNumber -> True, EdgeDirection -> True]

到现在都没有问题,可是我想把变化方向的边给他用别的颜色和形式(虚线)显示出来,总是不成功。我用过的方法有 Highlighted 和 SetGraphOptions, 这2个函数都可以将一部分的边用不同的颜色和形式显示出来,可是当我加上 EdgeDirection -> True 选项显示方向的时候,他总是把我已经手工改变的方向重新显示成没有手工改之前的样子,我已经尝试了好多次了,可惜还是没有成功,不知道虫友们又没有遇到这种情况的,很希望跟大家一起讨论。

用到的语句如下

ShowGraph[
Highlight[ Picture1, {{16,15},{27,21}},
  HighlightedEdgeStyle -> Dashed, HighlightedEdgeColors -> Red],
EdgeDirection -> True, VertexNumber -> True]

或者是

ShowGraph[
SetGraphOptions[
  Picture1, {{16, 15}, {27, 21}, EdgeColor -> Red,
   EdgeStyle -> Dashed, EdgeDirection -> True}, VertexNumber -> True]]

[ Last edited by zhiyucn on 2010-3-9 at 11:01 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhiyucn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见