Skip to content
Snippets Groups Projects
Select Git revision
  • f0ff846c70f77398c3544981d064c2fd1216aa22
  • master default protected
  • gitkeep
  • development protected
  • QRCode/Size
  • sync-link-hdf5
  • feature/multi-scriptpaths
  • dev/plotID_Class
  • doc
  • V1.0.1
  • V1.0
  • V1.0-RC1
  • V0.2.2
  • V0.2.1
  • V0.2-RC1
  • V0.1
16 results

default_test.m

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    tagplot.py 2.66 KiB
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Tag your plot with an ID.
    
    For publishing the tagged plot along your research data have a look at the
    module publish.
    
    Functions:
        TagPlot(figure object, string) -> list
    """
    
    import warnings
    from plotoptions import PlotOptions
    from tagplot_matplotlib import tagplot_matplotlib
    
    
    def tagplot(figs, engine, prefix='', id_method=1, location='east'):
        """
        Tag your figure/plot with an ID.
    
        After determining the plot engine, TagPlot calls the corresponding
        function which tags the plot.
    
        Parameters
        ----------
        figs : list
            Figures that should be tagged.
        engine : string
            Plot engine which should be used to tag the plot.
        prefix : string
            Will be added as prefix to the ID.
        id_method : int, optional
            id_method for creating the ID. Create an ID by Unix time is referenced
            as 1, create a random ID with id_method=2. The default is 1.
        location : string, optional
            Location for ID to be displayed on the plot. Default is 'east'.
    
        Raises
        ------
        RuntimeWarning
            DESCRIPTION.
    
        Returns
        -------
        list
            The resulting list contains two lists each with as many entries as
            figures were given. The first list contains the tagged figures.
            The second list contains the corresponding IDs as strings.
        """
        if isinstance(location, str):
            pass
        else:
            raise TypeError("Location is not a string.")
    
        match location:
            case 'north':
                rotation = 0
                position = (0.35, 0.975)
            case 'east':
                rotation = 90
                position = (0.975, 0.35)
            case 'south':
                rotation = 0
                position = (0.35, 0.015)
            case 'west':
                rotation = 90
                position = (0.025, 0.35)
            case 'southeast':
                rotation = 0
                position = (0.75, 0.015)
            case 'custom':
                # TODO: Get rotation and position from user input & check if valid
                rotation = 0
                position = (0.5, 0.5)
            case _:
                warnings.warn(f'Location "{location}" is not a defined '
                              'location, TagPlot uses location "east" '
                              'instead.')
                rotation = 90
                position = (0.975, 0.35)
    
        option_container = PlotOptions(figs, prefix, id_method,
                                       rotation, position)
        option_container.validate_input()
    
        match engine:
            case 'matplotlib' | 'pyplot':
                return tagplot_matplotlib(option_container)
            case _:
                raise ValueError(
                    f'The plot engine "{engine}" is not supported.')