ترسیم شبکه نمونه در پایتون

برای ترسیم شبکه‌های نمونه در سیستم قدرت می‌توان از برنامه‌نویسی پایتون استفاده کرد. در ادامه، روش ترسیم شکل برای یک شبکه نمونه برای مطالعه برنامه‌ریزی توسعه شبکه توزیع ارائه گردیده است.

from matplotlib.pyplot import savefig, show, figure, axis
from numpy import array

در داخل یک داده نوع dictionary، گره‌ها تعریف می‌کنیم. به عنوان نمونه، در کد زیر دو گره از نوع بار در مختصات طول و عرض داده شده، تعریف شده است:

Vertex = {'n1': {'position': array([1, 3.5]), 'type': 'load'}}
Vertex['n2'] = {'position': array([2, 3.5]), 'type': 'load'}

خطوط شبکه و نوع آنها در داخل یک داده از نوع لیست تعریف می‌شود. ستون اول گره ابتدا، ستون دوم گره انتها و ستون سوم نوع خط است که در آن 1 نشانگر خط موجود، 2 خط با قابلیت ارتقا؛ و 3 خط کاندید می‌باشد:

Edges = [
[	19	,	10	, 1],
[	1	,	5	, 2],
[	9	,	17	, 3]]

در بخش بعدی، بخش ترسیم آماده‌سازی می‌شود. در دو سطر ابتدایی اندازه کادر شکل تعریف می‌شود. در دو سطر بعدی حاشیه لازم برای شکل ایجاد می‌گردد و در انتها خطوط اطراف شکل غیرفعال می‌گردد.

# initialize figure
fh = figure(1, figsize=(5,4))
ax = fh.add_axes([0.0, 0.0, 1.0, 1.0])
ax.set_xlim([0, 4.5])
ax.set_ylim([0, 4.0])
ax.axis('off')

برای ترسیم خطوط شبکه، یک حلقه به صورت زیر ایجاد می‌گردد. به عنوان روش ترسیم خط نوع 1 در کد زیر ارائه شده است.

# plot network branches
for n in range(len(Edges)):
    prim_node = 'n' + str(Edges[n][0])
    seco_node = 'n' + str(Edges[n][1])
    brch_type = Edges[n][2]
    if brch_type==1:
        ax.plot(
            [Vertex[prim_node]['position'][0],
             Vertex[seco_node]['position'][0]],
            [Vertex[prim_node]['position'][1],
             Vertex[seco_node]['position'][1]],
            color='g',
            linestyle='-',
            linewidth=1)

گره‌ها نیز به صورت حلقه ترسیم می‌شوند. به عنوان در در کد زیر گره‌ها از نوع بار به صورت یک دایره تعریف می‌شود. با استفاده از متد annoatate شماره دایره در داخل دایره نوشته می‌شود:

# plot the nodes
for i in range(len(Vertex)):
    node = 'n' + str(i+1)
    if Vertex[node]['type']=='load':
        ax.plot(
            Vertex[node]['position'][0],
            Vertex[node]['position'][1],
            'o',
            ms=25,
            mec='b',
            mfc='w',
            )
        ax.annotate(
            str(i+1),
            xy=(Vertex[node]['position'][0], 
                Vertex[node]['position'][1]),
            ha='center',
            va='center',
            fontsize=14,
            color='blue')

در انتها شکل ترسیم شده در داخل فایل نوع png ذخیره می‌گردد:

fh.savefig('full_network_graph.png', dpi=300)

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا