program tip

파이썬을위한 대화 형 그래프 라이브러리가 있습니까?

radiobox 2020. 12. 26. 09:51
반응형

파이썬을위한 대화 형 그래프 라이브러리가 있습니까?


Python 용 대화 형 그래프 라이브러리를 찾고 있습니다.

" 그래프 "란 꼭지점 집합으로 연결된 노드 집합을 의미했습니다 (xy 축에 대한 값 플롯도 아니고 픽셀 격자도 아님).

"대화 형"이란 노드를 드래그 앤 드롭 할 수 있고 노드 / 정점을 클릭하고 라이브러리가 노드 / 정점을 내 콜백에 전달하도록해야합니다. 그러면 노드를 추가 / 제거 할 수 있습니다. 정점 또는 디스플레이 정보 (데이터 세트가 너무 크거나 복잡하기 때문에 시작시 전체 그래프를로드 할 수 없습니다. 대신 사용자 입력에 따라 필요한 데이터 조각 만로드합니다).

Python은 프로그래밍 언어 Python을 의미 했으며 그래프 라이브러리에는 CPython 바인딩이 있어야합니다. Python 2.7과 Python 3.1이 있지만 필요한 경우 2.6으로 다운 그레이드 할 수 있습니다. 이 언어 요구 사항은 작업중인 데이터 세트에 Python 바인딩 만 있기 때문입니다.

그래프 라이브러리는 방향성 그래프 를 지원 하고 노드를 자동으로 레이아웃 할 수 있어야합니다. 노드에 레이블을 붙여야합니다.

바람직하게는 레이아웃 알고리즘은 인접한 노드를 서로 가까이 배치해야합니다. 4 년 된 랩톱에서 100 ~ 1000 개의 노드와 약 300 ~ 4000 개의 정점을 합리적으로 처리 할 수 ​​있어야합니다 (일반적으로 약 100 개의 노드로 시작하지만 사용자 입력에 따라 숫자가 늘어날 수 있음). 가급적이면 종속성이 너무 많지 않은 라이브러리 여야합니다 (Gnome 제외). 오픈 소스가 선호됩니다.

Tkinter Canvas를 사용하여 내 프로그램의 간단한 프로토 타입을 이미 작성했지만 프로그램을 확장하려면 더 심각한 그래프 라이브러리가 필요합니다. 나는 graphviz와 matplotlib를 살펴 보았지만, 그들은 정적 그래프로만 작업하기위한 것이며, 대화 형 조작을하기 위해 상당한 양의 작업이 필요할 것입니다. (내가 틀렸다면 정정 해 주시고, 간단히 살펴 보았습니다) . 또한 그래프를 SVG 파일로 생성하고 Inkscape를 사용하여 보려고 시도했지만 너무 느리고 메모리가 너무 많이 사용되며 정점 수가 많기 때문에 엉망이됩니다.


Nodebox가 원하는 것 같습니다.

http://nodebox.net/code/index.php/Graph Mac OSX

http://www.cityinabottle.org/nodebox/ Windows (OpenGL 사용)

Nodebox 스크린 샷

그래프 개체에는 개체에 번들로 제공되는 마우스 상호 작용 기능도 있습니다 graph.events. 다음과 같은 속성이 있습니다.

  • graph.events.hovered: None또는 마우스가 가리키는 노드입니다.
  • graph.events.pressed: None또는 마우스가 누르고있는 노드.
  • graph.events.dragged: None또는 끌고있는 노드.
  • graph.events.clicked: None또는 마지막으로 클릭 한 노드.
  • graph.events.popup:이면 True마우스를 올려 놓은 노드 위에 팝업 창이 표시됩니다.

또한 Gephi를 가로 질러 왔으며 원하는 기능도 가질 수 있습니다.

http://gephi.org/ Windows , LinuxMac OSX

Gephi는 모든 종류의 네트워크와 복잡한 시스템, 동적 및 계층 적 그래프를위한 대화 형 시각화 및 탐색 플랫폼입니다.

gephi 스크린 샷


당신은 확실히 살펴 봐야 igraph의 당신이하지 않은 경우 라이브러리입니다.

큰 그래프와 다양한 레이아웃 스타일을 처리 할 수있는 강력한 라이브러리입니다. 또한 기능 목록에 따라 방향성 그래프와 2D 및 3D의 대화 형 및 비대화 형 시각화에 사용할 수 있습니다 . 튜토리얼있습니다 .

업데이트 : 또 다른 잘 알려진 라이브러리는 여기에 Python 패키지 가있는 NetworkX 입니다 . Acorn에서 권장하는 Mac / Windows 소프트웨어 Nodebox는 NetworkX 알고리즘을 사용합니다.


나도 같은 문제를 안고있어. 결국 nodebox opengl이 트릭을 수행하는 것 같습니다. 다음 링크에서 그래프 라이브러리를 사용하지 마십시오.

http://nodebox.net/code/index.php/Graph

nodebox OpenGL과 함께. 작동하지 않습니다. 그래프 라이브러리는 Mac OSX 노드 박스와 만 호환됩니다. 그러나 당신이 그것을 필요로하지 않기 때문에 어쨌든 괜찮습니다.

예를 들어 다음 질문을 참조하십시오.

노드 박스 opnegl의 그래프 가장자리에 레이블 추가

그것은 나를 위해 작동하는 예제 코드를 보여줍니다. 코드를 수정하여 노드를 클릭하면 노드를 이동할 수있을뿐만 아니라 그래프를 수정할 수도 있습니다.

그냥 삭제

label = "Placeholder"

코드에서 작동합니다.

편집하다:

여기에 좀 더 자세한 예제 코드를 넣었습니다. Nodebox open GL Graph, 크기 함수가 인식되지 않습니다. (우분투)

참조 URL : https://stackoverflow.com/questions/5759878/is-there-an-interactive-graphing-library-for-python

반응형