kececilayout
收藏DataCite Commons2025-07-16 更新2026-05-07 收录
下载链接:
https://workflowhub.eu/data_files/17?version=2
下载链接
链接失效反馈官方服务:
资源简介:
# KececiLayout
Kececi Layout (Keçeci Yerleşimi): A deterministic graph layout algorithm designed for visualizing linear or sequential structures with a characteristic "zig-zag" or "serpentine" pattern.
Python implementation of the Keçeci layout algorithm for graph visualization.
Description / Açıklama
This algorithm arranges nodes sequentially along a primary axis and offsets them alternately along a secondary axis. It's particularly useful for path graphs, chains, or showing progression.
Bu algoritma, düğümleri birincil eksen boyunca sıralı olarak yerleştirir ve ikincil eksen boyunca dönüşümlü olarak kaydırır. Yol grafları, zincirler veya ilerlemeyi göstermek için özellikle kullanışlıdır.
English Description
Keçeci Layout:
A deterministic node placement algorithm used in graph visualization. In this layout, nodes are arranged sequentially along a defined primary axis. Each subsequent node is then alternately offset along a secondary, perpendicular axis, typically moving to one side of the primary axis and then the other. Often, the magnitude of this secondary offset increases as nodes progress along the primary axis, creating a characteristic "zig-zag" or "serpentine" pattern.
Key Characteristics:
Linear Focus: Particularly useful for visualizing linear or sequential structures, such as paths, chains, or ordered processes.
Deterministic: Produces the exact same layout for the same graph and parameters every time.
Overlap Reduction: Helps prevent node collisions by spreading nodes out away from the primary axis.
Parametric: Can be customized using parameters such as the primary direction (e.g., top-down), the starting side for the secondary offset (e.g., start_right), and the spacing along both axes (primary_spacing, secondary_spacing).
Türkçe Tanımlama
Keçeci Yerleşimi (Keçeci Layout):
Graf görselleştirmede kullanılan deterministik bir düğüm yerleştirme algoritmasıdır. Bu yöntemde düğümler, belirlenen birincil (ana) eksen boyunca sıralı olarak yerleştirilir. Her bir sonraki düğüm, ana eksenin bir sağına bir soluna (veya bir üstüne bir altına) olmak üzere, ikincil eksen doğrultusunda dönüşümlü olarak kaydırılır. Genellikle, ana eksende ilerledikçe ikincil eksendeki kaydırma miktarı artar ve bu da karakteristik bir "zıgzag" veya "yılanvari" desen oluşturur.
Temel Özellikleri:
Doğrusal Odak: Özellikle yollar (paths), zincirler veya sıralı süreçler gibi doğrusal veya ardışık yapıları görselleştirmek için kullanışlıdır.
Deterministik: Aynı graf ve parametrelerle her zaman aynı sonucu üretir.
Çakışmayı Azaltma: Düğümleri ana eksenden uzağa yayarak çakışmaları önlemeye yardımcı olur.
Parametrik: Ana eksenin yönü (örn. top-down), ikincil kaydırmanın başlangıç yönü (örn. start_right) ve eksenler arası boşluklar (primary_spacing, secondary_spacing) gibi parametrelerle özelleştirilebilir.
Installation / Kurulum
conda install bilgi::kececilayout -y
pip install kececilayout
https://anaconda.org/bilgi/kececilayout
https://pypi.org/project/KececiLayout/
https://github.com/WhiteSymmetry/kececilayout
https://zenodo.org/records/15313947
https://zenodo.org/records/15314329
Usage / Kullanım
The layout function generally accepts a graph object and returns positions.
Example with NetworkX
import networkx as nx
import matplotlib.pyplot as plt
import kececilayout as kl # Assuming the main function is imported like this
import random
#Create a graph
G = nx.path_graph(10)
#Calculate layout positions using the generic function
#(Assuming kl.kececi_layout_v4 is the main/generic function)
pos = kl.kececi_layout_v4(G,
primary_spacing=1.0,
secondary_spacing=0.5,
primary_direction='top-down',
secondary_start='right')
#Draw the graph
plt.figure(figsize=(6, 8))
nx.draw(G, pos=pos, with_labels=True, node_color='skyblue', node_size=500, font_size=10)
plt.title("Keçeci Layout with NetworkX")
plt.axis('equal') # Ensure aspect ratio is equal
plt.show()
import matplotlib.pyplot as plt
import math
import networkx as nx
import kececilayout as kl
import random
try:
import kececilayout as kl
except ImportError:
print("Error: 'kececi_layout.py' not found or could not be imported.")
print("Please ensure the file containing kececi_layout_v4 is accessible.")
exit()
#--- General Layout Parameters ---
LAYOUT_PARAMS = {
'primary_spacing': 1.0,
'secondary_spacing': 0.6, # Make the zigzag noticeable
'primary_direction': 'top-down',
'secondary_start': 'right'
}
N_NODES = 10 # Number of nodes in the example graph
#=== NetworkX Example ===
try:
import networkx as nx
print("\n--- NetworkX Example ---")
#Generate graph (Path graph)
G_nx = nx.path_graph(N_NODES)
print(f"NetworkX graph generated: {G_nx.number_of_nodes()} nodes, {G_nx.number_of_edges()} edges")
#Calculate layout
print("Calculating Keçeci Layout...")
#Call the layout function from the imported module
pos_nx = kl.kececi_layout_v4(G_nx, **LAYOUT_PARAMS)
#print("NetworkX positions:", pos_nx) # Debug print if needed
#Plot
plt.figure(figsize=(6, 8)) # Suitable figure size for vertical layout
nx.draw(G_nx, # NetworkX graph object
pos=pos_nx, # Positions calculated by Kececi Layout
with_labels=True, # Show node labels (indices)
node_color='skyblue',# Node color
node_size=700, # Node size
font_size=10, # Label font size
edge_color='gray') # Edge color
plt.title(f"NetworkX ({N_NODES} Nodes) with Keçeci Layout") # Plot title
plt.xlabel("X Coordinate") # X-axis label
plt.ylabel("Y Coordinate") # Y-axis label
plt.axis('equal') # Ensure equal aspect ratio for correct spacing perception
#plt.grid(False) # Ensure grid is off
plt.show() # Display the plot
except ImportError:
print("NetworkX is not installed. Skipping this example.")
except Exception as e:
print(f"An error occurred in the NetworkX example: {e}")
import traceback
traceback.print_exc()
print("\n--- NetworkX Example Finished ---")
提供机构:
WorkflowHub
创建时间:
2025-07-16



