High-level geospatial data visualization library for Python.

Overview

geoplot: geospatial data visualization

Gitter Binder

geoplot is a high-level Python geospatial plotting library. It's an extension to cartopy and matplotlib which makes mapping easy: like seaborn for geospatial. It comes with the following features:

  • High-level plotting API: geoplot is cartographic plotting for the 90% of use cases. All of the standard-bearermaps that you’ve probably seen in your geography textbook are easily accessible.
  • Native projection support: The most fundamental peculiarity of geospatial plotting is projection: how do you unroll a sphere onto a flat surface (a map) in an accurate way? The answer depends on what you’re trying to depict. geoplot provides these options.
  • Compatibility with matplotlib: While matplotlib is not a good fit for working with geospatial data directly, it’s a format that’s well-incorporated by other tools.

Installation is simple with conda install geoplot -c conda-forge. See the documentation for help getting started.

Comments
  • norm_cmap isn't in geopandas

    norm_cmap isn't in geopandas

    Here: https://github.com/ResidentMario/geoplot/blob/master/geoplot/geoplot.py#L6

    geoplot seems to be outdated w/r/t geopandas. I'm not sure where the norm_cmap function got moved, but it doesn't seem to be there anymore...

    opened by choldgraf 50
  • slim down the repository!

    slim down the repository!

    I just cloned geoplot and it's >100MB!

    I bet a lot of this comes from the data module...could you host that data online somewhere (e.g. figshare?) and have users download it similarly to the geopandas.datasets module?

    enhancement 
    opened by choldgraf 19
  • Geoplot Webmap is upside down

    Geoplot Webmap is upside down

    Trying to follow the KDEplot + webmap tutorial but the webmap renders upside down and no combination of parameter specifications or tweaking will get it to render in the correct orientation.

    Code copied from here: https://residentmario.github.io/geoplot/gallery/plot_boston_airbnb_kde.html

    Resulting plot from plt.show():

    boston-airbnb-kde

    Any insights on how to fix / flip the webmap?

    opened by alexander-hamme 14
  • Failing voronoi example with the new 0.2.2 release

    Failing voronoi example with the new 0.2.2 release

    The geoplot release seems to have broken the geopandas examples (the voronoi one). I am getting the following error on our readthedocs build:

    Unexpected failing examples:
    /home/docs/checkouts/readthedocs.org/user_builds/geopandas/checkouts/latest/examples/plotting_with_geoplot.py failed leaving traceback:
    Traceback (most recent call last):
      File "/home/docs/checkouts/readthedocs.org/user_builds/geopandas/checkouts/latest/examples/plotting_with_geoplot.py", line 80, in <module>
        linewidth=0)
      File "/home/docs/checkouts/readthedocs.org/user_builds/geopandas/conda/latest/lib/python3.6/site-packages/geoplot/geoplot.py", line 2133, in voronoi
        geoms = _build_voronoi_polygons(df)
      File "/home/docs/checkouts/readthedocs.org/user_builds/geopandas/conda/latest/lib/python3.6/site-packages/geoplot/geoplot.py", line 2687, in _build_voronoi_polygons
        ls = np.vstack([np.asarray(infinite_segments), np.asarray(finite_segments)])
      File "/home/docs/checkouts/readthedocs.org/user_builds/geopandas/conda/latest/lib/python3.6/site-packages/numpy/core/shape_base.py", line 234, in vstack
        return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
    ValueError: all the input arrays must have same number of dimensions
    
    opened by jorisvandenbossche 12
  • Make dataset example self-contained

    Make dataset example self-contained

    I've consolidated the example datasets under a geopandas-like geoplot.datasets domain (here).

    This has the beneficial effect that it makes all of the examples in the geoplot documentation, especially the ones in the gallery, immediately reproducible for the user. However, the drawback is that I also have to distribute the example data with the library. After hewing and hawing every which way, I've gotten that down to a ~10 MB examples.zip file.

    @choldgraf I would like your feedback on this idea. Is a 10 MB add-on like this an acceptable load for such a library? Or should I maybe provide an nltk-like downloader instead?

    enhancement 
    opened by ResidentMario 11
  • Legends

    Legends

    Hi there. Here is the alteration that seems to pass your tests and fixes the legends. In particular

    • circle style for _paint_carto_legend is now consistent with the plot itself (edge colors, face colors)
    • by default Sankey lines have round end filling
    • Sankey now renders a new type of legend, _paint_sankey_legend that draws lines, also style-consistent.
    • Legends now add legend artist to the plot on the contrary to calling ax.Legend.

    A few questions/warnings

    • I don't mean this PR to be accepted (at this time), but rather to be a place for you to express your concerns/opinions
    1. I didn't get why you plot markers with 20*(dscale(x))**(1/2) in _paint_carto_legend. As I "fixed" markersize in the N1, it might now affect your example images.

    2. while adding artists fixed an issue with double legend for me, it might affect plotting multiple subplots. To my shape, I didn't check that yet. Still, I think there should be a way to have multiple legends on multiple subplots.

    3. As I plot network, I'd like to have one scaling factor both for nodes (points) and edges (sankey). Currently the only way to do that is to calculate upper bound from one using data from another.

    4. Generally, do you think if it makes sense to add yet another type of plot - [geo]network? and handle everything with nodes and legends there?

    opened by Casyfill 11
  • Error importing geopandas

    Error importing geopandas

    I tried to install geoplot in various different ways but can never get rid of errors.

    I first tried to create a conda venv from scratch and install: conda install geoplot -c conda-forge I open a Jupyter Notebook, go through your quick start and get stuck at the very beginning when importing geopandas.

    Thinking that this was an issur vith my venv, I decided to completely clone your github repo ResidentMario/geoplot and creata a brand new environment from your environment.yml. I did that, and run my Jupyter Notebook from that geoplot-dev venv: I still cannot import geopandas without error.

    That is strange, I have no clue on how to get set-up and use geoplot at that point. Would be glad if you can help.


    ImportError Traceback (most recent call last) in ----> 1 import geopandas as gpd

    ~/opt/anaconda3/envs/geoplot-dev/lib/python3.8/site-packages/geopandas/init.py in 3 from geopandas.array import _points_from_xy as points_from_xy # noqa 4 ----> 5 from geopandas.io.file import read_file # noqa 6 from geopandas.io.sql import read_postgis # noqa 7 from geopandas.tools import sjoin # noqa

    ~/opt/anaconda3/envs/geoplot-dev/lib/python3.8/site-packages/geopandas/io/file.py in 4 import pandas as pd 5 ----> 6 import fiona 7 from shapely.geometry import mapping 8 from shapely.geometry.base import BaseGeometry

    ~/opt/anaconda3/envs/geoplot-dev/lib/python3.8/site-packages/fiona/init.py in 82 os.environ["PATH"] = os.environ["PATH"] + ";" + libdir 83 ---> 84 from fiona.collection import BytesCollection, Collection 85 from fiona.drvsupport import supported_drivers 86 from fiona.env import ensure_env_with_credentials, Env

    ~/opt/anaconda3/envs/geoplot-dev/lib/python3.8/site-packages/fiona/collection.py in 7 8 from fiona import compat, vfs ----> 9 from fiona.ogrext import Iterator, ItemsIterator, KeysIterator 10 from fiona.ogrext import Session, WritingSession 11 from fiona.ogrext import buffer_to_virtual_file, remove_virtual_file, GEOMETRY_TYPES

    ImportError: dlopen(/Users/Armellini1/opt/anaconda3/envs/geoplot-dev/lib/python3.8/site-packages/fiona/ogrext.cpython-38-darwin.so, 2): Library not loaded: @rpath/libnetcdf.15.dylib Referenced from: /Users/Armellini1/opt/anaconda3/envs/geoplot-dev/lib/libgdal.26.dylib Reason: image not found

    opened by mtlberri 10
  • Cannot import because other modules missing

    Cannot import because other modules missing

    When I try to import geoplot, I get the following error: ModuleNotFoundError: No module named 'rasterio.io'. I have installed the rasterio package, but I see that it is missing the .io and .vrt modules, both of which are needed to import geoplot. I thought about raising this issue on the rasterio repository but figured I would start here. I'm using Anaconda on OSX.

    Here's the full error message:

    import geoplot Traceback (most recent call last):

    File "", line 1, in import geoplot

    File "/Users/pregiste/opt/anaconda3/lib/python3.7/site-packages/geoplot/init.py", line 1, in from .geoplot import (

    File "/Users/pregiste/opt/anaconda3/lib/python3.7/site-packages/geoplot/geoplot.py", line 17, in import contextily as ctx

    File "/Users/pregiste/opt/anaconda3/lib/python3.7/site-packages/contextily/init.py", line 7, in from .place import Place, plot_map

    File "/Users/pregiste/opt/anaconda3/lib/python3.7/site-packages/contextily/place.py", line 6, in from .tile import howmany, bounds2raster, bounds2img, _sm2ll, _calculate_zoom

    File "/Users/pregiste/opt/anaconda3/lib/python3.7/site-packages/contextily/tile.py", line 20, in from rasterio.io import MemoryFile

    ModuleNotFoundError: No module named 'rasterio.io'

    opened by xtremecheez 10
  • Static binning solution for voroni

    Static binning solution for voroni

    I'm looking to create static category bins so my coloring doesn't change between plots. I'm not sure how to achieve this sort of behavior currently and was looking for assistance.

    My voroni call looks like this, and the data is changing between invocations

    gplt.voronoi(
    		    data, 
    		    projection=ep.proj, clip=clipper,
    		    hue='lmp', cmap='Reds', 
    		    k=10, scheme='fisher_jenks',
    		    ax=ax, alpha=0.9,zorder=7,
    		    edgecolor='white', legend=True,extent=clipper.total_bounds
    		    )
    

    ex. plot 1 image

    ex. plot 2 image

    I would just like to create the bins beforehand, or maybe preprocess the data in some way so that the legend and colors are consistent between plots so I can use them in an animation.

    Thanks!

    opened by eanderson4 10
  • subplot problem

    subplot problem

    I refer on Choropleth subplots

    to subplot spatial map with data.

    individually it works pretty well.

    ax = gplt.polyplot(AB_base )
    
    
    def power_scale(minval, maxval):
    
        def scalar(val):
            val = val + abs(minval) + 1
            return (val/100)**3/150
        return scalar
    
    
    gplt.kdeplot(elevation,  ax=ax,linewidth=0,
                 legend = True,
                 shade_lowest=False,
                 cbar = True,
                  clip=AB_base.geometry, cmap='summer_r',
                      shade=True, alpha = 0.6)
    
    gplt.pointplot(geo_station,  ax=ax,
                   scale= 'elev(m)',  k = None,
                               limits =(1,30) , 
                              scale_func= power_scale,                             
                  hue=geo_station['elev(m)'].astype(float), cmap='viridis_r',
                                   alpha = 0.8,
                   legend=True, legend_var='hue', 
                  )
    
    plt.title("~~~")
    plt.show()
    

    image

    but when I subplot more variables like this:

    def plot_to_ax(state, ax):
       
        
        gplt.polyplot(AB_base, ax = ax)
    
        gplt.kdeplot(elevation, linewidth=0.0, ax = ax,
                     shade_lowest=False,
                     clip=AB_base.geometry, cmap='summer_r',
                     shade=True, alpha = 0.6)
    
        gplt.pointplot(geo_station, k = None, ax=ax,
                       scale= state, limits =(1,30),                           
                       hue= state, 
                       cmap='viridis_r',alpha = 0.8,
                       legend=True, legend_var='hue'
                       )
        
    
    # Finally, plot the data.
    f, axarr = plt.subplots(2, 2, figsize=(5, 5))
    
    plt.subplots_adjust(top=0.95)
    
    plot_state_to_ax('ANUSPLIN_output', axarr[0][0])
    axarr[0][0].set_title('ANUSPLIN (n=6679268)')
    
    plot_state_to_ax('CaPA_output', axarr[0][1])
    axarr[0][1].set_title('CaPA (n=854647)')
    
    plot_state_to_ax('NARR_output', axarr[1][0])
    axarr[1][0].set_title('NARR(n=215065)')
    
    plot_state_to_ax('TPS_output', axarr[1][1])
    axarr[1][1].set_title('TPS (n=126661)')
    

    image

    all plot in one result, I think the method should be good - as reference is from the official tutorial. tried many ways and still get stuck in this problem for 3 days...

    any advice or solutions?

    thanks

    opened by Questionm 9
  • Grey boxes when clipping data with kdeplot

    Grey boxes when clipping data with kdeplot

    Hi!

    I am struggling a bit with the KDEplot and clipping the data on my geometry. When I perform the code on the whole of Germany it works fine, and I get this map:

    image

    While when I try to perform it on the states of Germany, it gives weird results, which are different for each state. See here a few examples:

    image image image

    This is the code:

    def sentimentKDE (data, state, title):
        proj = gcrs.Mercator()
    
        fig = plt.figure(figsize=(15, 10))
        ax1 = plt.subplot(121, projection=proj)
        ax2 = plt.subplot(122, projection=proj) 
    
        gplt.kdeplot(data[data['label']=='Positive'], shade=True, cmap='Reds',clip=geom_germany[geom_germany['GEN'] == state].geometry,ax=ax1,)
        gplt.polyplot(geom_germany[geom_germany['GEN'] == state].geometry,ax=ax1,  facecolor='white')
        ax1.set_title("Positive tweets", fontsize=20)
    
        gplt.kdeplot(data[data['label']=='Negative'], shade=True, cmap='Reds',clip=geom_germany[geom_germany['GEN'] == state].geometry,ax=ax2)
        gplt.polyplot(geom_germany[geom_germany['GEN'] == state].geometry,ax=ax2, facecolor='white',)
        ax2.set_title("Negative tweets", fontsize=20)
    
        plt.savefig(title)
    

    Do you have any idea what is going wrong? Would love the help.

    Thank you in advance!

    opened by MichelleJansen1 8
  • Tests fail with geopandas 0.11

    Tests fail with geopandas 0.11

    It appears that an expected warning is no longer raised:

    _______________________ TestClip.test_clip_init_default ________________________
    
    self = <mixin_tests.TestClip testMethod=test_clip_init_default>
    
        def test_clip_init_default(self):
            clipmixin = self.create_clipmixin()
        
            # UserWarning because we have a narrow clip
    >       with pytest.warns(UserWarning):
    E       Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted. The list of emitted warnings is: [].
    
    tests/mixin_tests.py:593: Failed
    
    opened by QuLogic 0
  • Does geoplot only work with EPSG:4326 unless the projection argument is set?

    Does geoplot only work with EPSG:4326 unless the projection argument is set?

    I'm trying to create a plot using data that is not in EPSG:4326. This is necessary since I need to make computations which require a cartesian coordinate system. This MWE returns a blank plot:

    import geopandas as gpd
    import geoplot as gplt
    import matplotlib.pyplot as plt
    
    # read the following dataset using geopandas method: gplt.datasets.get_path('ny_census')
    ny = gpd.read_file(gplt.datasets.get_path('ny_census'))
    
    # transform the x,y data into that of a projected CRS
    ny_proj = ny.to_crs(32016)
    
    # create a variable for population density
    ny_proj['population_density'] = ny_proj['POP2000'] / ny_proj.area
    
    # create a choropleth map of population density
    gplt.choropleth(ny_proj, hue = 'POP2000')
    plt.show()
    # it's blank
    

    This works, however, using the native plot() method:

    ny_proj.plot()
    plt.show()
    

    I know that I could feed gplt.choropleth() an unprojected geodataframe and then specify the projection argument as something that is projected, but this feels a bit cumbersome and will result in counterintuitive results. E.g., I'd have to attach a variable back to the original ny geodataframe, and if there were units attached to this variable (e.g., meters or feet), these would not match the linear unit of the CRS.

    Am I missing something in my geoplot MWE or was it only intended to work with EPSG:4326?

    opened by mhaffner 0
  • geoplot.kdeplot --> overlapping isolines

    geoplot.kdeplot --> overlapping isolines

    Using the kdeplot, with only one dataset, it appears that isolines are overlapping instead of merging, producing two local maxima instead of a consistent isoline around all features. Screen Shot 2022-02-25 at 9 01 22 AM

    opened by patsaylor 8
  • projection=gcrs.OSGB() sometimes creates a blank plot

    projection=gcrs.OSGB() sometimes creates a blank plot

    Apologies if this turns out to be a cartopy issue (I'm not deeply familiar with cartopy), but after digging around, I can't find anyone else running into it.

    I'm hitting two odd edge cases where setting projection=gcrs.OSGB() creates a blank plot, but AlbersEqualArea() plots fine.

    1. A GeoDataFrame read from the following (Great Britain and Northern Ireland borders), dropping Northern Ireland with .dropna([11]) plots when extent is set but not when it's omitted. AlbersEqualArea() plots fine without extent.
    gplt.polyplot(
        uk_borders_partial,
        zorder=1,
        projection=gcrs.OSGB(approx=False),
        extent=uk_borders_partial.total_bounds,
        edgecolor='gray',
        figsize=(12,12)
        )
    
    1. Setting the previous to ax= and tacking on the following KDEPlot creates a blank plot if clip=uk_borders_partial (Northern Ireland is dropped). Using the full GeoDataFrame or any subset of the full GeoDataFrame that does not drop Northern Ireland, e.g. uk_borders_full[5:12], plots exactly as expected. The code, with Ireland dropped, also plots as expected with AlbersEqualArea(). Just not with OSGB().
    gplt.kdeplot(
        lichen_2011_11,
        clip=uk_borders_partial,
        projection=gcrs.OSGB(approx=False),
        cmap='Reds',
        shade=True,
        ax=ax,
        extent=uk_borders_partial.total_bounds,
        )
    

    Would the latter be an issue with how clip gets passed to seaborn kdeplot?

    Thank you for your help, and for this beautiful library.

    bug 
    opened by data-wombat 1
  • New feature: marker styles

    New feature: marker styles

    Hi,

    it would be really helpful to have a style argument (Grouping variable that will produce points with different markers) similar to what done in seaborn (example)

    feature 
    opened by gcaria 0
  • Make quadtree calculations faster

    Make quadtree calculations faster

    I experimented with a multiprocessing implementation of the quadtree algorithm in the following notebook. The multiprocessing component isn't all that useful, but the changes also include logic for better, faster splitting rules. If I take this to completion it will represent a very significant speedup in this algorithm's runtime.

    enhancement 
    opened by ResidentMario 0
Releases(0.5.1)
  • 0.5.1(Mar 18, 2022)

  • 0.5.0(Feb 27, 2022)

    This maintenance release includes the follows breaking changes:

    • The minimum Python version has been raised to 3.7, as Python 3.6 has now reached EOL (#270).
    • The handling of certain parameters (namely: legend, cmap, and hue) to geoplot.kdeplot has been changed. Previously these parameters were interpreted by geoplot directly. Now they are simply passed down to the underlying seaborn.kdeplot instance (#271, #272).

    This maintenance release includes the following non-breaking changes:

    • Removed the deprecation warning for the long-removed k parameter (#273).
    • Fixed various deprecation notices in underlying libraries (#268, #269).
    • Miscellaneous minor fixes in code and docs.
    Source code(tar.gz)
    Source code(zip)
  • 0.4.4(Sep 10, 2021)

    This release pins geopandas to the minimum supported version. Due to descartes bit-rotting, we now rely on the PolygonPatch implementation internal to geopandas>=0.9.0 (the most recent major version, at time of writing). See further https://github.com/geopandas/geopandas/pull/1677, #238, #249.

    Source code(tar.gz)
    Source code(zip)
  • 0.4.3(Jul 4, 2021)

    This maintenance release fixes a few bugs, updates the projection list (#243), and removes this library's dependency on the no-longer-maintained descartes library ( #238).

    Note: 0.4.2 was skipped due to a bug (#245).

    Source code(tar.gz)
    Source code(zip)
  • 0.4.1(May 17, 2020)

    This is a maintenance release mostly fixing deprecations caused by changes in geopandas and contextily.

    There is one minor user-facing change: the API for providing webmap tiles to webmap has changed. Refer to the documentation for details.

    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Nov 1, 2019)

    This release is a major breaking refactor of the colormap parameters in geoplot.

    Changes to the scheme parameter and the removal of k parameter

    In previous versions of geoplot, categorical colormaps were specified by a combination of the scheme and k string parameters. For example:

    import geoplot as gplt
    df = gpd.read_file(gplt.datasets.get_path('usa_cities'))
    gplt.pointplot(df, hue='ELEV_IN_FT', cmap='viridis', scheme='EqualInterval', k=5)
    

    In versions of geoplot 0.4.0 and later, the code to do this is now:

    gplt.pointplot(df, hue='ELEV_IN_FT', cmap='viridis', scheme='EqualInterval')
    

    Or this:

    import mapclassify as mc
    scheme = mc.EqualInterval(df['ELEV_IN_FT'], k=5)
    gplt.pointplot(df, hue='ELEV_IN_FT', cmap='viridis', scheme=scheme)
    

    This changeset was implemented primarily to make it possible to share the same colormap across plots. This was previously very difficult to do: see #163 and #182 for further context.

    Other changes

    This update also includes a number of minor bugfixes and docs changes.

    Source code(tar.gz)
    Source code(zip)
  • 0.3.3(Oct 7, 2019)

  • 0.3.2(Sep 21, 2019)

    This release brings a revamped test suite and a variety of bug fixes to geoplot, as well as one breaking change:

    • The default behavior of the hue variable has changed. Previously, a categorical colormap with k=5 was the default. Now, a continuous colormap with k=None is the default.
    Source code(tar.gz)
    Source code(zip)
  • 0.3.1(Aug 24, 2019)

    This is an incremental release that fixes some bugs and adds some new features to geoplot.

    • The default extent determination code has been improved.
    • A plot type, webmap, and henceforth a new dependency, contextily (#169).
    • A new projection type, WebMercator, usable but all plot types but especially relevant to the new webmap plot type.
    • All plots that support the hue visual parameter now additionally support a norm parameter for performing colormap normalization (#168).
    • Inputting a Series or GeoSeries to a parameter that accepts flexible types now correctly uses the input data's index (#165).

    Also, while this is now a code change, geoplot now has an official Gitter room! Go there to ask questions about working with or developing on this library.

    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Jul 5, 2019)

    This release is the first comprehensive overhaul of geoplot since its initial design and release in early 2017. While this release adds no new "large-scale" features, you can except a much more polished user experience with 0.3.0 than previously existed.

    Breaking changes include (highlights in bold):

    • The categorical argument has been removed. geoplot will now infer when a column is categorical automatically.
    • The overly complicated aggplot plot type has been removed and replaced with the simplified quadtree. Most parameters are the same, but the convex hull and auto-choropleth features have been removed.
    • Plots now use the center of the GeoDataFrame bounding box geometry (via GeoDataFrame.total_bounds) instead of the cumulative average of the individual geometries, which is both faster and more accurate.
    • The order of arguments for the extent parameter has changed. Previously it took a tuple of (xmin, xmax, ymin, ymax); now it takes a tuple of (xmin, ymin, xmax, ymax), for compatibility with GeoDataFrame.total_bounds.
    • When overplotting multiple plots on a single axis, the projection now need only be specified once, instead of once per plot function.
    • The sankey has been reworked. path, from, and to have been removed; line geometries are now read from the GeoDataFrame instead of transformed just-in-time. This brings sankey more in line with the rest of the plots in the geoplot.
    • The trace and trace_kwargs parameters have been removed from cartogram. To add a trace to a cartogram plot, overplot a polyplot instead.
    • cmap now defaults to viridis (as in matplotlib) instead of Set1.
    • The minimum Python version has been raised from 3.5 to 3.6.
    • polyplot now defaults to zorder=-1 (e.g. "bottom of the plot").
    • kdeplot now defaults to shade_lowest=False.
    • The vmin and vmax parameters have been removed.

    Other changes include:

    • A number of edge cases have been addressed and reliability has been improved, particularly in the case of the voronoi and quadtree plot types.
    • Certain common bad combinations of parameters will now raise helpful error messages instead of failing inexplicably or doing the wrong thing.
    • The documentation has been completely rewritten for ease of use and clarity.
    • Certain parameters like clip now accept more types of inputs.
    • Code has been refactored with new Plot and {Feature}Mixin classes, which greatly increases code reuse and extensibility and will make adding new plot types in the future much easier.
    Source code(tar.gz)
    Source code(zip)
  • 0.0.4(Oct 15, 2017)

Owner
Aleksey Bilogur
Building tools for doing data science @spellml. {📊, 💻, 🛠️}. Previously: @quiltdata, @recursecenter, @Kaggle, @MODA-NYC.
Aleksey Bilogur
Pyan3 - Offline call graph generator for Python 3

Pyan takes one or more Python source files, performs a (rather superficial) static analysis, and constructs a directed graph of the objects in the combined source, and how they define or use each oth

Juha Jeronen 235 Jan 02, 2023
By default, networkx has problems with drawing self-loops in graphs.

By default, networkx has problems with drawing self-loops in graphs. It makes it hard to draw a graph with self-loops or to make a nicely looking chord diagram. This repository provides some code to

Vladimir Shitov 5 Jan 06, 2022
ecoglib: visualization and statistics for high density microecog signals

ecoglib: visualization and statistics for high density microecog signals This library contains high-level analysis tools for "topos" and "chronos" asp

1 Nov 17, 2021
Create artistic visualisations with your exercise data (Python version)

strava_py Create artistic visualisations with your exercise data (Python version). This is a port of the R strava package to Python. Examples Facets A

Marcus Volz 53 Dec 28, 2022
Data visualization electromagnetic spectrum

Datenvisualisierung-Elektromagnetischen-Spektrum Anhand des Moduls matplotlib sollen die Daten des elektromagnetischen Spektrums dargestellt werden. D

Pulsar 1 Sep 01, 2022
Statistical data visualization using matplotlib

seaborn: statistical data visualization Seaborn is a Python visualization library based on matplotlib. It provides a high-level interface for drawing

Michael Waskom 10.2k Dec 30, 2022
A research of IT labor market based especially on hh.ru. Salaries, rate of technologies and etc.

hh_ru_research Проект реализован в учебных целях анализа рынка труда, в особенности по hh.ru Input data В качестве входных данных используются сериали

3 Sep 07, 2022
a plottling library for python, based on D3

Hello August 2013 Hello! Maybe you're looking for a nice Python interface to build interactive, javascript based plots that look as nice as all those

Mike Dewar 1.4k Dec 28, 2022
🧇 Make Waffle Charts in Python.

PyWaffle PyWaffle is an open source, MIT-licensed Python package for plotting waffle charts. It provides a Figure constructor class Waffle, which coul

Guangyang Li 528 Jan 02, 2023
3D Vision functions with end-to-end support for deep learning developers, written in Ivy.

Ivy vision focuses predominantly on 3D vision, with functions for camera geometry, image projections, co-ordinate frame transformations, forward warping, inverse warping, optical flow, depth triangul

Ivy 61 Dec 29, 2022
Matplotlib JOTA style for making figures

Matplotlib JOTA style for making figures This repo has Matplotlib JOTA style to format plots and figures for publications and presentation.

JOTA JORNALISMO 2 May 05, 2022
Simple addon for snapping active object to mesh ground

Snap to Ground Simple addon for snapping active object to mesh ground How to install: install the Python file as an addon use shortcut "D" in 3D view

Iyad Ahmed 12 Nov 07, 2022
Exploratory analysis and data visualization of aircraft accidents and incidents in Brazil.

Exploring aircraft accidents in Brazil Occurrencies with aircraft in Brazil are investigated by the Center for Investigation and Prevention of Aircraf

Augusto Herrmann 5 Dec 14, 2021
paintable GitHub contribute table

githeart paintable github contribute table how to use: Functions key color select 1,2,3,4,5 clear c drawing mode mode on turn off e print paint matrix

Bahadır Araz 27 Nov 24, 2022
Frbmclust - Clusterize FRB profiles using hierarchical clustering, plot corresponding parameters distributions

frbmclust Getting Started Clusterize FRB profiles using hierarchical clustering,

3 May 06, 2022
Make sankey, alluvial and sankey bump plots in ggplot

The goal of ggsankey is to make beautiful sankey, alluvial and sankey bump plots in ggplot2

David Sjoberg 156 Jan 03, 2023
Alternative layout visualizer for ZSA Moonlander keyboard

General info This is a keyboard layout visualizer for ZSA Moonlander keyboard (because I didn't find their Oryx or their training tool particularly us

10 Jul 19, 2022
Python module for drawing and rendering beautiful atoms and molecules using Blender.

Batoms is a Python package for editing and rendering atoms and molecules objects using blender. A Python interface that allows for automating workflows.

Xing Wang 1 Jul 06, 2022
A python package for animating plots build on matplotlib.

animatplot A python package for making interactive as well as animated plots with matplotlib. Requires Python = 3.5 Matplotlib = 2.2 (because slider

Tyler Makaro 394 Dec 18, 2022
WebApp served by OAK PoE device to visualize various streams, metadata and AI results

DepthAI PoE WebApp | Bootstrap 4 & Vue.js SPA Dashboard Based on dashmin (https:

Luxonis 6 Apr 09, 2022