কম্পিউটার টিউটোরিয়াল

NetworkX ও Matplotlib-এ মাল্টিপার্টাইট গ্রাফ আঁকা

মাল্টিপার্টাইট গ্রাফে নোডগুলো লেয়ার বা সাবসেটে ভাগ থাকে এবং শুধু সন্নিহিত লেয়ারের নোডগুলোর মধ্যে এজ থাকে। NetworkX-র multipartite_layout এবং multilayered_graph 헬্পার ফাংশন দিয়ে এটি সহজে আঁকা যায়।

ধাপসমূহ
  1. ফিগার সাইজ এবং লেআউট সেট করুন।
  2. সাবসেট সাইজ এবং রঙের লিস্ট বানান।
  3. multilayered_graph() ফাংশন লিখুন যা লেয়ার অনুযায়ী নোড এবং এজ যোগ করে।
  4. নোড রঙ অ্যাসাইন করুন।
  5. nx.multipartite_layout() দিয়ে পজিশন ক্যালকুলেট করুন।
  6. nx.draw() দিয়ে আঁকুন।
  7. plt.axis('equal') এবং plt.show()।
উদাহরণ কোড
import itertools
import matplotlib.pyplot as plt
import networkx as nx

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

subset_sizes = [5, 5, 4, 3, 2, 4, 4, 3]
subset_color = [
    "gold", "violet", "violet", "violet", "violet",
    "limegreen", "limegreen", "darkorange",
]

def multilayered_graph(*subset_sizes):
    extents = nx.utils.pairwise(itertools.accumulate((0,) + subset_sizes))
    layers = [range(start, end) for start, end in extents]
    G = nx.Graph()
    for (i, layer) in enumerate(layers):
        G.add_nodes_from(layer, layer=i)
    for layer1, layer2 in nx.utils.pairwise(layers):
        G.add_edges_from(itertools.product(layer1, layer2))
    return G

G = multilayered_graph(*subset_sizes)
color = [subset_color[data["layer"]] for v, data in G.nodes(data=True)]
pos = nx.multipartite_layout(G, subset_key="layer")
nx.draw(G, pos, node_color=color, with_labels=False)
plt.axis("equal")
plt.show()
আউটপুট

৮টি লেয়ারে বিন্যাসকৃত নোডগুলো দেখাবে, প্রতিটি লেয়ারের নোডে আলাদা রঙ। নোডগুলো সরাসরি রেখায় সাজানো থাকবে।

  1. পাইথন Matplotlib ব্যবহার করে ৩D গ্রাফ প্লট করার পদ্ধতি

  2. Matplotlib-এ আর্থবৃত্ত ডেটা ব্যবহার করে ৪D প্লট কীভাবে তৈরি করবেন?

  3. Python-এ matplotlib ব্যবহার করে একই পেজে একাধিক প্লট করার পদ্ধতি

  4. Matplotlib ব্যবহার করে দুটি ডটেড লাইন প্লট করা এবং مار্কার সেট করা