Bạn có thể làm một cái gì đó như thế này bằng cách sử dụng VertexRenderingFunction
.
GraphPlot[{{A -> C, "go"}, {C -> B, "gone"}, {C -> D, "went"}, {C -> C, "loop"}},
DirectedEdges -> True,
VertexRenderingFunction -> ({{White, Disk[#, 0.15]},
AbsoluteThickness[2], Circle[#, 0.15],
If[MatchQ[#2, A | B], Circle[#, 0.12], {}], Text[#2, #]} &)]

Phương pháp Cập nhật tháng 2 năm 2015
Để duy trì khả năng tương tác sắp xếp lại đồ thị với các công cụ vẽ (double click) người ta phải giữ cho đồ họa đỉnh bên trong GraphicsComplex
, với chỉ mục thay vì tọa độ. Tôi tin rằng người ta có thể làm điều này từ VertexRenderingFunction
bằng cách sử dụng biến số tăng nhưng có vẻ dễ dàng hơn để thực hiện việc đó với chế độ hậu xử lý. Này hoạt động trong các phiên bản 7 và 10 của Mathematica, có lẽ 8 và 9 cũng như:
GraphPlot[
{{A -> C, "go"}, {C -> B, "gone"}, {C -> D, "went"}, {C -> C, "loop"}},
DirectedEdges -> True
] /.
Tooltip[Point[n_Integer], label_] :>
{{White, Disk[n, 0.15]},
Black, AbsoluteThickness[2], Circle[n, 0.15],
If[MatchQ[label, A | B], Circle[n, 0.12], {}], Text[label, n]}

Không có lý do bạn không thể sử dụng đồ họa nguyên thủy để vẽ một cái gì đó như thế này. Bạn có yêu cầu giải pháp bố cục tự động không? –
@ Mr.Wizard Có, tôi đang tìm kiếm một số cấp cao nguyên thủy để vẽ sơ đồ trạng thái phức tạp. Tôi không biết liệu Mathematica có cung cấp điều đó hay không. Tôi đã tìm kiếm thông qua tài liệu và kiểm tra các tùy chọn của hàm "GraphPlot" và kết thúc bằng mã ở trên. – Ning
Tại sao bạn chấp nhận câu trả lời của tôi? Hình dạng nó vẫn sai. Tôi đánh giá cao nó, nhưng tôi nghĩ bạn nên chờ đợi một câu trả lời tốt hơn. –