def create_source_collection(net, sources=None, size=1., infofunc=None, picker=False, orientation=(np.pi*7/6), **kwargs): """ Creates a matplotlib patch collection of pandapipes sources. :param net: The pandapipes network :type net: pandapipesNet :param sources: The sources for which the collections are created. If None, all sources connected to junctions that have junction_geodata entries are considered. :type sources: list, default None :param size: Patch size :type size: float, default 1. :param infofunc: infofunction for the patch element :type infofunc: function, default None :param picker: Picker argument passed to the patch collection :type picker: bool, default False :param orientation: Orientation of source collection. pi is directed downwards, increasing\ values lead to clockwise direction changes. :type orientation: float, default np.pi*(7/6) :param kwargs: Keyword arguments are passed to the patch function :return: source_pc - patch collection, source_lc - line collection """ sources = get_index_array(sources, net.source.index) if len(sources) == 0: return None infos = [infofunc(i) for i in range(len(sources))] if infofunc is not None else [] node_coords = net.junction_geodata.loc[net.source.loc[sources, "junction"].values, ["x", "y"]].values source_pc, source_lc = _create_node_element_collection( node_coords, source_patches, size=size, infos=infos, orientation=orientation, picker=picker, repeat_infos=(1, 3), **kwargs) return source_pc, source_lc
def create_ext_grid_collection(net, size=1., infofunc=None, orientation=0, picker=False, ext_grids=None, ext_grid_junctions=None, **kwargs): """ Creates a matplotlib patch collection of pandapipes ext_grid. Parameters ext_grids, ext_grid_junctions can be used to specify, which ext_grids the collection should be created for. :param net: The pandapipes network :type net: pandapipesNet :param size: Patch size :type size: float, default 1. :param infofunc: infofunction for the patch element :type infofunc: function, default None :param orientation: Orientation of ext_grid collection. 0 is directed upwards, increasing values lead to clockwise direction changes. :type orientation: float, default 0 :param picker: Picker argument passed to the patch collection :type picker: bool, default False :param ext_grids: The ext_grids for which the collections are created. If None, all ext_grids which have the entry coords in ext_grid_geodata are considered. :type ext_grids: list, default None :param ext_grid_junctions: Junctions to be used as ext_grid locations :type ext_grid_junctions: np.ndarray, default None :param kwargs: Keyword arguments are passed to the patch function :return: ext_grid1 - patch collection, ext_grid2 - patch collection """ ext_grids = get_index_array(ext_grids, net.ext_grid.index) if ext_grid_junctions is None: ext_grid_junctions = net.ext_grid.junction.loc[ext_grids].values else: if len(ext_grids) != len(ext_grid_junctions): raise ValueError( "Length mismatch between chosen ext_grids and ext_grid_junctions." ) infos = [infofunc(ext_grid_idx) for ext_grid_idx in ext_grids] if infofunc is not None else [] node_coords = net.junction_geodata.loc[ext_grid_junctions, ["x", "y"]].values ext_grid_pc, ext_grid_lc = _create_node_element_collection( node_coords, ext_grid_patches, size=size, infos=infos, orientation=orientation, picker=picker, hatch="XXX", **kwargs) return ext_grid_pc, ext_grid_lc
def create_source_collection(net, sources=None, size=1., infofunc=None, picker=False, orientation=(np.pi*7/6), cmap=None, norm=None, z=None, **kwargs): """ Creates a matplotlib patch collection of pandapipes sources. :param net: The pandapipes network :type net: pandapipesNet :param sources: The sources for which the collections are created. If None, all sources connected to junctions that have junction_geodata entries are considered. :type sources: list, default None :param size: Patch size :type size: float, default 1. :param infofunc: infofunction for the patch element :type infofunc: function, default None :param picker: Picker argument passed to the patch collection :type picker: bool, default False :param orientation: Orientation of source collection. pi is directed downwards, increasing\ values lead to clockwise direction changes. :type orientation: float, default np.pi*(7/6) :param cmap: colormap for the source colors :type cmap: matplotlib norm object, default None :param norm: matplotlib norm object to normalize the values of z :type norm: matplotlib norm object, default None :param z: Array of source result magnitudes for colormap. Used in case of given cmap. If None,\ net.res_source.mdot_kg_per_s is used. :type z: array, default None :param kwargs: Keyword arguments are passed to the patch function :return: source_pc - patch collection, source_lc - line collection """ sources = get_index_array(sources, net.source.index) if len(sources) == 0: return None infos = [infofunc(i) for i in range(len(sources))] if infofunc is not None else [] node_coords = net.junction_geodata.loc[net.source.loc[sources, "junction"].values, ["x", "y"]].values colors = kwargs.pop("color", "k") linewidths = kwargs.pop("linewidths", 2.) linewidths = kwargs.pop("linewidth", linewidths) linewidths = kwargs.pop("lw", linewidths) if cmap is not None: if z is None: z = net.res_source.mdot_kg_per_s colors = [cmap(norm(z.at[idx])) for idx in sources] patch_edgecolor = kwargs.pop("patch_edgecolor", colors) line_color = kwargs.pop("line_color", colors) source_pc, source_lc = _create_node_element_collection( node_coords, source_patches, size=size, infos=infos, orientation=orientation, picker=picker, patch_edgecolor=patch_edgecolor, line_color=line_color, linewidths=linewidths, repeat_infos=(1, 3), **kwargs) return source_pc, source_lc
def create_sink_collection(net, sinks=None, size=1., infofunc=None, picker=False, orientation=np.pi, **kwargs): """ Creates a matplotlib patch collection of pandapipes sinks. :param net: The pandapipes network :type net: pandapipesNet :param sinks: The sinks for which the collections are created. If None, all sinks connected to junctions that have junction_geodata entries are considered. :type sinks: list, default None :param size: patch size :type size: float, default 1 :param infofunc: infofunction for the patch element :type infofunc: function, default None :param picker: picker argument passed to the patch collection :type picker: bool, default False :param orientation: orientation of sink collection. pi is directed downwards, increasing values\ lead to clockwise direction changes. :type orientation: float, default np.pi :param kwargs: key word arguments are passed to the patch function :return: sink_pc - patch collection sink_lc - line collection """ sinks = get_index_array(sinks, net.sink.index) if len(sinks) == 0: return None infos = [infofunc(i) for i in range(len(sinks))] if infofunc is not None else [] node_coords = net.junction_geodata.loc[net.sink.loc[sinks, "junction"].values, ['x', 'y']].values sink_pc, sink_lc = _create_node_element_collection(node_coords, load_patches, size=size, infos=infos, orientation=orientation, picker=picker, **kwargs) return sink_pc, sink_lc