vì vậy thư viện tôi khuyên bạn nên sử dụng cho đoạn mã của tôi trong câu trả lời này là không phải thư viện python, nhưng đó là thư viện thân thiện với python. mô-đun để xử lý dữ liệu và mã nước ngoài này sẽ kết nối với mã python còn tồn tại trên cả hai đầu, tức là cả đầu vào và đầu ra và tôi nghi ngờ, mặc dù tất nhiên tôi không biết, đó là tất cả điều đó thực sự có nghĩa là "thư viện python "tiêu chí. Vì vậy, nếu bạn đang viết một ứng dụng web, mã này sẽ là phía máy khách. Nói cách khác, thư viện này không phải là python, nhưng nó hoạt động với python.
đầu vào của nó là (gần) dicts python liệu, cụ thể hơn, json.load (a_python_dict) trả về một mảng json hoặc đối tượng, một định dạng mà điều này javascript thư viện có thể tất nhiên nhận ra; và
định dạng đầu ra là HTML hoặc SVG, không đối tượng trong một số định dạng ngôn ngữ cụ thể
Bạn có thể sử dụng d3.js.Nó có một class đặc biệt cho cây render:
var tree = d3.layout.tree().size([h, w]);
Ngoài ra còn có một vài ví dụ về cây (mã làm việc) trong dụ thư mục trong nguồn d3, mà bạn có thể sao chép/tải hình thành liên kết tôi đã cung cấp ở trên.
Vì d3 là thư viện javascript, định dạng dữ liệu gốc của nó là JSON.
Cấu trúc cơ bản là một cuốn từ điển lồng nhau, mỗi từ điển đại diện cho một nút duy nhất với hai giá trị, tên của nút và con của nó (được lưu trữ trong một mảng), vừa khít với tên và trẻ em, tương ứng :
{"name": "a_root_node", "children": ["B", "C"]}
và tất nhiên nó đơn giản để chuyển đổi giữa các từ điển python và JSON:
>>> d = {"name": 'A', "children": ['B', 'C']}
>>> import json as JSON
>>> dj = JSON.dumps(d)
>>> dj
'{"name": "A", "children": ["B", "C"]}'
đây là một con trăn điển đại diện của một cây lớn hơn (một chục hay như vậy nút) mà tôi chuyển đổi sang JSON như trên, và sau đó kết xuất trong d3 như cây thể hiện trong hình dưới đây:
tree = {'name': 'root', 'children': [{'name': 'node 2', 'children':
[{'name': 'node 4', 'children': [{'name': 'node 10', 'size': 7500},
{'name': 'node 11', 'size': 12000}]}, {'name': 'node 5', 'children':
[{'name': 'node 12', 'children': [{'name': 'node 16', 'size': 10000},
{'name': 'node 17', 'size': 12000}]}, {'name': 'node 13', 'size': 5000}]}]},
{'name': 'node 3', 'children': [{'name': 'node 6', 'children':
[{'name': 'node 14', 'size': 8000}, {'name': 'node 15', 'size': 9000}]},
{'name': 'node 7', 'children': [{'name': 'node 8', 'size': 10000},
{'name': 'node 9', 'size': 12000}]}]}]}
lưu ý: d3 ám trong các trình duyệt ; hình ảnh trên chỉ là ảnh chụp màn hình của cửa sổ trình duyệt của tôi.
Bạn có thể nói thêm về ý nghĩa của "tệp biểu đồ cây" không? Một ví dụ đầu vào/đầu ra và một số ý kiến về cách bạn muốn sử dụng đầu ra sẽ rất hữu ích. – neirbowj
@neirbowj nhận xét hay, cảm ơn; cập nhật – jdotjdot