Ejemplo n.º 1
0
def plot_zones():
    net = get_net_118_with_zones()
    areas = get_subnets(net)

    fig, axes = plt.subplots(1, len(areas.keys()))

    keys = areas.keys()
    keys = sorted(keys)
    for i, zone in enumerate(keys):
        net = areas[zone]
        collections = list()
        ax = axes[i]
        sizes = pplt.get_collection_sizes(net)
        collections.append(pplt.create_bus_collection(net, size=sizes["bus"]))
        collections.append(pplt.create_line_collection(net))
        collections.append(
            pplt.create_trafo_collection(net, size=sizes["trafo"]))
        if zone == 3:
            collections.append(
                pplt.create_bus_collection(net,
                                           net.bus.loc[net.bus.toy_zone].index,
                                           color="g",
                                           size=2 * sizes["bus"],
                                           zorder=11))
        pplt.draw_collections(collections, ax=ax)

    plt.show()
Ejemplo n.º 2
0
def printPFResults(fname):
    xyz = pp.from_pickle(fname)
    #print xyz
    pp.runpp(xyz)
    print("\nBus Flows\n-----------------\n")
    print xyz.res_bus
    print("\nLine Flows\n----------------\n")
    print xyz.res_line
    print("\nLoad Measurements\n------------------\n")
    #print xyz.res_load
    print xyz.line.index

    try:
        import seaborn
        colors = seaborn.color_palette()
    except:
        colors = ["b", "g", "r", "c", "y"]

    #plot.fuse_geodata(xyz)
    #plot.simple_plot(xyz, bus_size=0.7)

    cmap_list = [(20, "green"), (50, "yellow"), (60, "red")]
    cmap, norm = plot.cmap_continous(cmap_list)

    plot.create_generic_coordinates(xyz, respect_switches=True)

    lc = plot.create_line_collection(xyz,
                                     xyz.line.index,
                                     zorder=1,
                                     cmap=cmap,
                                     norm=norm,
                                     linewidths=2)
    plot.draw_collections([lc], figsize=(8, 6))
 def updateLineCollection(self, redraw=False):
     lc = plot.create_line_collection(self.net,
                                      zorder=1,
                                      linewidths=1,
                                      picker=True,
                                      use_line_geodata=False,
                                      color="green",
                                      infofunc=lambda x: ("line", x))
     self.collections["line"] = lc
     if redraw:
         self.drawCollections()
Ejemplo n.º 4
0
def plot_feeder():
    net = nw.case118()
    fig, ax = plt.subplots(1, 1)
    mg = top.create_nxgraph(net, nogobuses=set(net.trafo.lv_bus.values))
    colors = sns.color_palette()
    collections = list()
    sizes = pplt.get_collection_sizes(net)
    voltage_levels = net.bus.vn_kv.unique()
    voltage_level_colors = dict(zip(voltage_levels, colors))
    legend_entries = dict()
    gens = set(net.gen.loc[:, "bus"].values)
    for area, color in zip(top.connected_components(mg), colors):
        vn_area = net.bus.loc[list(area)[0], "vn_kv"]
        color = voltage_level_colors[vn_area]
        legend_entries[vn_area] = color
        area_gens = gens - area
        other = area - gens

        collections.append(
            pplt.create_bus_collection(net,
                                       area_gens,
                                       color=color,
                                       size=sizes["bus"],
                                       zorder=11,
                                       patch_type="rect"))
        collections.append(
            pplt.create_bus_collection(net,
                                       other,
                                       color=color,
                                       size=sizes["bus"],
                                       zorder=11))
        line_ind = net.line.loc[:, "from_bus"].isin(
            area) | net.line.loc[:, "to_bus"].isin(area)
        lines = net.line.loc[line_ind].index
        collections.append(pplt.create_line_collection(net, lines,
                                                       color=color))

    eg_vn = net.bus.at[net.ext_grid.bus.values[0], "vn_kv"]
    collections.append(
        pplt.create_ext_grid_collection(net,
                                        size=sizes["ext_grid"],
                                        color=voltage_level_colors[eg_vn]))
    collections.append(
        pplt.create_trafo_collection(net, size=sizes["trafo"], zorder=1))
    pplt.draw_collections(collections, ax=ax)
    custom_legend(fig, entries=legend_entries)
    legend_entries = {"gen": "grey"}
    custom_legend(fig, entries=legend_entries, loc='center right', marker="s")
    print_info(net, fig)
    plt.show()
def plot_net(net, ax=None):
    if ax is None:
        fig, ax = mpl.subplots(1, 1, figsize=(10, 7))
    mean_distance_between_buses = sum(
        (net['bus_geodata'].max() - net['bus_geodata'].min()).dropna() / 200)

    bus_size = mean_distance_between_buses * 1.
    ext_grid_size = mean_distance_between_buses * 1.
    trafo_size = mean_distance_between_buses * .1

    collections = list()
    if ax is None:
        fig, ax = plt.subplots(1, 1)

    # create plot collection to visualize results
    cmap, norm = plt.cmap_continuous([(0.9, "blue"), (1.0, "green"),
                                      (1.1, "red")])
    collections.append(
        plt.create_bus_collection(net, size=bus_size, cmap=cmap, norm=norm))
    cmap, norm = plt.cmap_continuous([(0., "green"), (50., "yellow"),
                                      (100., "red")])
    collections.append(
        plt.create_line_collection(net,
                                   use_bus_geodata=True,
                                   linewidth=1.,
                                   cmap=cmap,
                                   norm=norm))
    collections.append(
        plt.create_trafo_collection(net,
                                    size=trafo_size,
                                    color="green",
                                    alpha=.5))
    collections.append(
        plt.create_ext_grid_collection(net,
                                       size=ext_grid_size,
                                       orientation=1.5))

    for idx in net.bus_geodata.index:
        x = net.bus_geodata.loc[idx, "x"]
        y = net.bus_geodata.loc[idx, "y"] + bus_size * 1.
        ax.text(x + 0.01, y, str(idx), fontsize=8, color="k")

    plt.draw_collections(collections, ax=ax)
    mpl.tight_layout()
    ax.axis('off')
    mpl.show()

    mpl.close()
def plot_network(net):
    #  función que recibe una red y la grafica.
    colors = ["k", "b", "g", "r", "c", "y"]
    buses = net.bus.index.tolist()
    coords = zip(net.bus_geodata.x.loc[buses].values + 0.02,
                 net.bus_geodata.y.loc[buses].values + 0.02)
    lc = plot.create_line_collection(net,
                                     net.line.index,
                                     color=colors[0],
                                     use_bus_geodata=True,
                                     zorder=1)
    bc = plot.create_bus_collection(net,
                                    net.bus.index,
                                    size=0.02,
                                    bus_geodata=None,
                                    color=colors[0],
                                    zorder=2)
    bic = plot.create_annotation_collection(size=0.07,
                                            texts=np.char.mod('%d', buses),
                                            coords=coords,
                                            zorder=3,
                                            color=colors[0])
    tf = plot.create_trafo_collection(net,
                                      trafos=net.trafo.index,
                                      color=colors[0],
                                      size=0.04,
                                      zorder=4)
    sc = plot.create_bus_collection(net,
                                    net.ext_grid.bus.values,
                                    patch_type="rect",
                                    size=0.03,
                                    color=colors[2],
                                    zorder=5)
    ld = plot.create_load_collection(net, size=0.03)
    sg = plot.create_sgen_collection(net,
                                     sgens=net.sgen.index[1:],
                                     size=0.05,
                                     orientation=0)
    sg1 = plot.create_sgen_collection(net,
                                      sgens=[net.sgen.index[0]],
                                      size=0.05,
                                      orientation=np.pi / 2)
    sw = plot.create_line_switch_collection(net,
                                            size=0.04,
                                            distance_to_bus=0.08)
    return plot.draw_collections([lc, bc, bic, tf, sc, ld, sg, sg1, sw],
                                 figsize=(7, 10))
def plot_network(net):
    # create buses ID
    buses = net.bus.index.tolist()  # list of all bus indices
    coords = zip(net.bus_geodata.x.loc[buses].values + 0.15,
                 net.bus_geodata.y.loc[buses].values +
                 0.07)  # tuples of all bus coords
    bic = plot.create_annotation_collection(size=0.2,
                                            texts=np.char.mod('%d', buses),
                                            coords=coords,
                                            zorder=3,
                                            color="black")
    # creating a color function to get a linear a colormap with color centers green at 30%, yellow at 50% and red at 60%
    # line loading
    cmap_list_lines = [(20, "green"), (50, "yellow"), (60, "red")]
    cmap_lines, norm_lines = plot.cmap_continuous(cmap_list_lines)
    # create a collection for colouring each line according to a line color range.
    lc = plot.create_line_collection(net,
                                     net.line.index,
                                     zorder=2,
                                     cmap=cmap_lines,
                                     norm=norm_lines,
                                     linewidths=2)
    # create discrete map for node pu magnitude
    cmap_list_nodes = [(0.975, "blue"), (1.0, "green"), (1.03, "red")]
    cmap_nodes, norm_nodes = plot.cmap_continuous(cmap_list_nodes)
    bc = plot.create_bus_collection(
        net,
        net.bus.index,
        size=0.07,
        zorder=2,
        cmap=cmap_nodes,
        norm=norm_nodes)  #80 of mv obherreim and 0.07 for ieee
    tlc, tpc = plot.create_trafo_collection(net, net.trafo.index, color="g")
    sc = plot.create_bus_collection(net,
                                    net.ext_grid.bus.values,
                                    patch_type="rect",
                                    size=.08,
                                    color="y",
                                    zorder=11)
    # draw the different collections
    plot.draw_collections([lc, bc, tlc, tpc, sc, bic], figsize=(8, 6))
    plt.show()
Ejemplo n.º 8
0
 def __init__(self, net):
     super(SliderWidget, self).__init__()
     self.setupUi(self)
     self.net = net
     self.net.line_geodata.drop(set(net.line_geodata.index) - set(net.line.index), inplace=True)
     cmap, norm = plot.cmap_continous([(0.97, "blue"), (1.0, "green"), (1.03, "red")])
     self.bc = plot.create_bus_collection(net, size=90, zorder=2, cmap=cmap, norm=norm, picker=True,
                                          infofunc=lambda x: "This is bus %s"%net.bus.name.at[x])
     cmap, norm = plot.cmap_continous([(20, "green"), (50, "yellow"), (60, "red")])
     self.lc = plot.create_line_collection(net, zorder=1, cmap=cmap, norm=norm, linewidths=2,
                                           infofunc=lambda x: "This is line %s"%net.line.name.at[x])
     self.fig, self.ax = plt.subplots()
     plot.draw_collections([self.bc, self.lc], ax=self.ax)
     plt.close()
     self.canvas = FigureCanvas(self.fig)
     self.canvas.mpl_connect('pick_event', self.pick_event)
     self.gridLayout.addWidget(self.canvas)
     self.canvas.draw()
     self.LoadSlider.valueChanged.connect(self.slider_changed)
     self.SgenSlider.valueChanged.connect(self.slider_changed)
     self.setWindowTitle("PyQt with pandapower Demo")
Ejemplo n.º 9
0
    def network_plot(self, data: GridData, mode="topological_graph", pause=5):
        """
        plot the network using matplotlib

        * mode = topological_graph or color_map
        """

        if mode == "topological_graph":
            self.net.bus_geodata.drop(self.net.bus_geodata.index, inplace=True)
            self.net.line_geodata.drop(self.net.line_geodata.index,
                                       inplace=True)
            pplot.create_generic_coordinates(self.net)
            pplot.fuse_geodata(self.net)
            buses = self.net.bus.index.tolist()
            coords = zip(self.net.bus_geodata.x.loc[buses].values,
                         self.net.bus_geodata.y.loc[buses].values)
            bus_layer = pplot.create_bus_collection(self.net,
                                                    self.net.bus.index,
                                                    size=.05,
                                                    color="black",
                                                    zorder=1)
            sub_layer = pplot.create_bus_collection(
                self.net,
                self.net.ext_grid.bus.values,
                patch_type="rect",
                size=.2,
                color="yellow",
                zorder=2)
            busid_layer = pplot.create_annotation_collection(size=0.2,
                                                             texts=np.char.mod(
                                                                 '%d', buses),
                                                             coords=coords,
                                                             zorder=3,
                                                             color="blue")
            line_layer = pplot.create_line_collection(self.net,
                                                      self.net.line.index,
                                                      color="grey",
                                                      linestyles="dashed",
                                                      linewidths=0.2,
                                                      use_bus_geodata=True,
                                                      zorder=4)
            lines_ergized = self.net.line[self.net.line.in_service ==
                                          True].index
            line_ergized_layer = pplot.create_line_collection(self.net,
                                                              lines_ergized,
                                                              color="red",
                                                              zorder=5)
            pplot.draw_collections([
                line_layer, bus_layer, sub_layer, busid_layer,
                line_ergized_layer
            ],
                                   figsize=(8, 6))
            pass

        if mode == "color_map":
            self.net.bus_geodata.drop(self.net.bus_geodata.index, inplace=True)
            self.net.line_geodata.drop(self.net.line_geodata.index,
                                       inplace=True)
            voltage_map = [((0.00, 0.90), "lime"), ((0.90, 0.950), "g"),
                           ((0.950, 1.05), "b"), ((1.05, 1.1), "m"),
                           ((1.1, 1.5), "r")]
            cmap, norm = pplot.cmap_discrete(voltage_map)
            pplot.create_generic_coordinates(self.net)
            pplot.fuse_geodata(self.net)
            buses = self.net.bus.index.tolist()
            coords = zip(self.net.bus_geodata.x.loc[buses].values,
                         self.net.bus_geodata.y.loc[buses].values)
            bus_layer = pplot.create_bus_collection(self.net,
                                                    self.net.bus.index,
                                                    size=.05,
                                                    cmap=cmap,
                                                    norm=norm,
                                                    color="black",
                                                    zorder=1)
            sub_layer = pplot.create_bus_collection(
                self.net,
                self.net.ext_grid.bus.values,
                patch_type="rect",
                size=.2,
                color="yellow",
                zorder=2)
            busid_layer = pplot.create_annotation_collection(size=0.2,
                                                             texts=np.char.mod(
                                                                 '%d', buses),
                                                             coords=coords,
                                                             zorder=3,
                                                             color="blue")
            line_layer = pplot.create_line_collection(self.net,
                                                      self.net.line.index,
                                                      color="grey",
                                                      linestyles="dashed",
                                                      linewidths=0.2,
                                                      use_bus_geodata=True,
                                                      zorder=4)
            lines_ergized = self.net.line[self.net.line.in_service ==
                                          True].index
            line_ergized_layer = pplot.create_line_collection(self.net,
                                                              lines_ergized,
                                                              color="red",
                                                              zorder=5)
            pplot.draw_collections([
                line_layer, bus_layer, sub_layer, busid_layer,
                line_ergized_layer
            ],
                                   figsize=(8, 6))
            pass

        plt.ion()
        plt.plot()
        # put the fault lines list in the figure
        plt.annotate("fault lines: %s" % data.list_fault_line, (-2.3, -2.8))
        if pause == 0:
            plt.show()
        else:
            plt.pause(pause)
            plt.close()
        pass
net.res_line_est
net.res_bus
net.res_bus_est

net.line

net.res_line_est
net.res_line
net.res_line = net.res_line_est

net.measurement
net.res_ext_grid




net
import pandapower as pp
import pandapower.networks as nw
import pandapower.plotting as plot
from pandapower.plotting.plotly import simple_plotly
%matplotlib inline

cmap_list=[(20, "green"), (50, "yellow"), (60, "red")]
cmap, norm = plot.cmap_continous(cmap_list)
lc = plot.create_line_collection(net, net.line.index, zorder=1, cmap=cmap, norm=norm, linewidths=2)
plot.draw_collections([lc], figsize=(8,6))
plot.simple_plot(net, show_plot=True, trafo_size = 1.5, plot_loads = True, plot_sgens = True)
simple_plotly(net,respect_switches=True )
import pandapower.networks as nw
import pandapower.plotting as pplt
import matplotlib.pyplot as plt

net = nw.create_cigre_network_mv()

# limits
vmax = 1.05
vmin = .95
max_ll = 100.

lines = net.line.index
critical = list()

for l in lines:
    net.line.loc[l, "in_service"] = False
    pp.runpp(net)

    if net.res_bus.vm_pu.max() > vmax or net.res_bus.vm_pu.min(
    ) < vmin or net.res_line.loading_percent.max() > max_ll:
        critical.append(l)
    net.line.loc[l, "in_service"] = True

ax = pplt.simple_plot(net, show_plot=False)
clc = pplt.create_line_collection(net,
                                  critical,
                                  color="r",
                                  linewidth=3.,
                                  use_bus_geodata=True)
pplt.draw_collections([clc], ax=ax)
plt.show()
Ejemplo n.º 12
0
import pandapower.plotting as plot
import matplotlib.pyplot as plt

# load network case
# net = nw.mv_oberrhein()
net=nw.case33bw()
# net = nw.create_synthetic_voltage_control_lv_network(network_class='rural_1')
# run pf
pp.runpp(net)

# creating a color function to get a linear a colormap with color centers green at 30%, yellow at 50% and red at 60%
# line loading
cmap_list_lines=[(20, "green"), (50, "yellow"), (60, "red")]
cmap_lines, norm_lines = plot.cmap_continuous(cmap_list_lines)
# create a collection for colouring each line according to a line color range.
lc = plot.create_line_collection(net, net.line.index, zorder=2, cmap=cmap_lines, norm=norm_lines, linewidths=2)
# create discrete map for node pu magnitude
cmap_list_nodes=[(0.975, "blue"), (1.0, "green"), (1.03, "red")]
cmap_nodes, norm_nodes = plot.cmap_continuous(cmap_list_nodes)
bc = plot.create_bus_collection(net, net.bus.index, size=0.07, zorder=2, cmap=cmap_nodes, norm=norm_nodes) #80 of mv obherreim and 0.07 for ieee
# tlc, tpc = plot.create_trafo_collection(net, net.trafo.index, color="g")
sc = plot.create_bus_collection(net, net.ext_grid.bus.values, patch_type="rect", size=.08, color="y", zorder=11)
# plot.draw_collections([lc, bc, sc], figsize=(8,6))
# plt.show()

net_generic = nw.case33bw()
net_generic.bus_geodata.drop(net_generic.bus_geodata.index, inplace=True)
net_generic.line_geodata.drop(net_generic.line_geodata.index, inplace=True)
plot.create_generic_coordinates(net_generic, respect_switches=True) #create artificial coordinates with the igraph package
colors = ["b", "g", "r", "c", "y"]
plot.fuse_geodata(net_generic)
Ejemplo n.º 13
0
import pandapower.networks as nw
import pandapower.plotting as plot
import matplotlib.pyplot as plt
import seaborn

colours = seaborn.color_palette()

net = nw.mv_oberrhein()
bc = plot.create_bus_collection(net,
                                buses=net.bus.index,
                                color=colours[0],
                                size=80,
                                zorder=1)
lc = plot.create_line_collection(net,
                                 lines=net.line.index,
                                 color='grey',
                                 zorder=2)

long_lines = net.line.loc[net.line.length_km > 2.].index
lc1 = plot.create_line_collection(net,
                                  lines=long_lines,
                                  color=colours[2],
                                  zorder=2)
plot.draw_collections([lc, bc, lc1])
plt.show()
try:
    import seaborn
    colors = seaborn.color_palette()
except:
    colors = ["b", "g", "r", "c", "y"]
#%matplotlib inline

net = nw.mv_oberrhein()
#net = nw.create_cigre_network_mv(with_der="pv_wind")

#lc = plot.create_line_collection(net, net.line.index, color="grey", zorder=1) #create lines
#bc = plot.create_bus_collection(net, net.bus.index, size=80, color=colors[0], zorder=2) #create buses
#plot.draw_collections([lc, bc], figsize=(8,6)) # plot lines and buses

long_lines = net.line[net.line.length_km > 2.].index
lc = plot.create_line_collection(net, net.line.index, color="grey", zorder=1)
lcl = plot.create_line_collection(net, long_lines, color=(.3, 1, .3), zorder=2)

pp.runpp(net)
low_voltage_buses = net.res_bus[net.res_bus.vm_pu < 0.98].index
bc = plot.create_bus_collection(net,
                                net.bus.index,
                                size=90,
                                color=(.2, .2, 1),
                                zorder=10)
bch = plot.create_bus_collection(net,
                                 low_voltage_buses,
                                 size=90,
                                 color=(1, 0, 0),
                                 zorder=11)
plot.draw_collections([lc, lcl, bc, bch], figsize=(8, 6))
Ejemplo n.º 15
0
# identify overvoltage
vm_max = 1.00
overvoltage_bus = net.res_bus[net.res_bus['vm_pu']>vm_max]
for i_overvoltage in  overvoltage_bus.index:
    overvoltage_bus_value = overvoltage_bus['vm_pu'][i_overvoltage]
    overvoltage_bus_id = i_overvoltage
    print(f"Bus with overvoltage:{overvoltage_bus_id}, load_percentage:{overvoltage_bus_value}")

# visualize network
colors = seaborn.color_palette()
if 1==0:
    plot.simple_plot(net, show_plot=True)
if 1==0:
    low_voltage_buses = net.res_bus[net.res_bus.vm_pu < 0.98].index
    lc = plot.create_line_collection(net, net.line.index, color="grey", zorder=1)
    bc = plot.create_bus_collection(net, net.bus.index, size=90, color=colors[0], zorder=10)
    bch = plot.create_bus_collection(net, low_voltage_buses, size=90, color=colors[2], zorder=11)
    plot.draw_collections([lc, bc, bch], figsize=(8, 6))
    plt.show()

# OPF Part--------------------------------------------------------------
# creating virtual generators and virtual loads for OPF execution
print("OPF part. Creation of flexible sources")
# add virtual demands and generators to quantify the flexibility request
net_opf = pp.pandapowerNet(net)
flex_source_1_up = pp.create_gen(net_opf,bus4, name='Flex_1_UP', min_p_mw=0, p_mw=0, max_p_mw=100, min_q_mvar=0, max_q_mvar=200, controllable=True)
flex_source_1_down = pp.create_load(net_opf, bus4,name='Flex_1_DOWN', p_mw=0, min_p_mw=0, max_p_mw=100, min_q_mvar=0, max_q_mvar=200, controllable=True)
dummy = 1

# costs parameters for flexibility activation
# Youtube Tutorial: https://www.youtube.com/watch?v=QYDp_-TX7C4
import pandapower as pp
import pandapower.plotting as pplt
import pandapower.topology as top
import pandapower.networks as nw
import matplotlib.pyplot as plt
import seaborn as sns

net = nw.mv_oberrhein()
pplt.simple_plot(net)

mg = top.create_nxgraph(net, nogobuses=set(net.trafo.lv_bus.values) | set(net.trafo.hv_bus.values))
colors = sns.color_palette()
collections = list()
sizes = pplt.get_collection_sizes(net)
for area, color in zip(top.connected_components(mg), colors):
    collections.append(pplt.create_bus_collection(net, area, color=color, size=sizes["bus"]))
    line_ind = net.line.loc[:, "from_bus"].isin(area) | net.line.loc[:, "to_bus"].isin(area)
    lines = net.line.loc[line_ind].index
    collections.append(pplt.create_line_collection(net, lines, color=color))
collections.append(pplt.create_ext_grid_collection(net, size=sizes["ext_grid"]))
pplt.draw_collections(collections)
plt.show()