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
哔咔漫画window客户端,界面使用PySide2,已实现分类、搜索、收藏夹、下载、在线观看、waifu2x等功能。

picacomic-windows 哔咔漫画window客户端,界面使用PySide2,已实现分类、搜索、收藏夹、下载、在线观看等功能。 功能介绍 登陆分流,还原安卓端的三个分流入口 分类,搜索,排行,收藏夹使用同一的逻辑,滚轮下滑自动加载下一页,双击打开 漫画详情,章节列表和评论列表 下载功能,目

1.8k Dec 31, 2022
A simple agent-based model used to teach the basics of OOP in my lectures

Pydemic A simple agent-based model of a pandemic. This is used to teach basic principles of object-oriented programming to master students. It is not

Fabien Maussion 2 Jun 08, 2022
A curated list of awesome Dash (plotly) resources

Awesome Dash A curated list of awesome Dash (plotly) resources Dash is a productive Python framework for building web applications. Written on top of

Luke Singham 1.7k Jan 07, 2023
Generate graphs with NetworkX, natively visualize with D3.js and pywebview

webview_d3 This is some PoC code to render graphs created with NetworkX natively using D3.js and pywebview. The main benifit of this approac

byt3bl33d3r 68 Aug 18, 2022
Type-safe YAML parser and validator.

StrictYAML StrictYAML is a type-safe YAML parser that parses and validates a restricted subset of the YAML specification. Priorities: Beautiful API Re

Colm O'Connor 1.2k Jan 04, 2023
Scientific measurement library for instruments, experiments, and live-plotting

PyMeasure scientific package PyMeasure makes scientific measurements easy to set up and run. The package contains a repository of instrument classes a

PyMeasure 445 Jan 04, 2023
flask extension for integration with the awesome pydantic package

Flask-Pydantic Flask extension for integration of the awesome pydantic package with Flask. Installation python3 -m pip install Flask-Pydantic Basics v

249 Jan 06, 2023
Generate visualizations of GitHub user and repository statistics using GitHub Actions.

GitHub Stats Visualization Generate visualizations of GitHub user and repository statistics using GitHub Actions. This project is currently a work-in-

Aditya Thakekar 1 Jan 11, 2022
:bowtie: Create a dashboard with python!

Installation | Documentation | Gitter Chat | Google Group Bowtie Introduction Bowtie is a library for writing dashboards in Python. No need to know we

Jacques Kvam 753 Dec 22, 2022
Interactive plotting for Pandas using Vega-Lite

pdvega: Vega-Lite plotting for Pandas Dataframes pdvega is a library that allows you to quickly create interactive Vega-Lite plots from Pandas datafra

Altair 342 Oct 26, 2022
Scientific Visualization: Python + Matplotlib

An open access book on scientific visualization using python and matplotlib

Nicolas P. Rougier 8.6k Dec 31, 2022
Small binja plugin to import header file to types

binja-import-header (v1.0.0) Author: matteyeux Import header file to Binary Ninja types view Description: Binary Ninja plugin to import types from C h

matteyeux 15 Dec 10, 2022
Splore - a simple graphical interface for scrolling through and exploring data sets of molecules

Scroll through and exPLORE molecule sets The splore framework aims to offer a si

3 Jun 18, 2022
Python histogram library - histograms as updateable, fully semantic objects with visualization tools. [P]ython [HYST]ograms.

physt P(i/y)thon h(i/y)stograms. Inspired (and based on) numpy.histogram, but designed for humans(TM) on steroids(TM). The goal is to unify different

Jan Pipek 120 Dec 08, 2022
Streamlit dashboard examples - Twitter cashtags, StockTwits, WSB, Charts, SQL Pattern Scanner

streamlit-dashboards Streamlit dashboard examples - Twitter cashtags, StockTwits, WSB, Charts, SQL Pattern Scanner Tutorial Video https://ww

122 Dec 21, 2022
Glue is a python project to link visualizations of scientific datasets across many files.

Glue Glue is a python project to link visualizations of scientific datasets across many files. Click on the image for a quick demo: Features Interacti

675 Dec 09, 2022
basemap - Plot on map projections (with coastlines and political boundaries) using matplotlib.

Basemap Plot on map projections (with coastlines and political boundaries) using matplotlib. ⚠️ Warning: this package is being deprecated in favour of

Matplotlib Developers 706 Dec 28, 2022
Datapane is the easiest way to create data science reports from Python.

Datapane Teams | Documentation | API Docs | Changelog | Twitter | Blog Share interactive plots and data in 3 lines of Python. Datapane is a Python lib

Datapane 744 Jan 06, 2023
An intuitive library to add plotting functionality to scikit-learn objects.

Welcome to Scikit-plot Single line functions for detailed visualizations The quickest and easiest way to go from analysis... ...to this. Scikit-plot i

Reiichiro Nakano 2.3k Dec 31, 2022
Data visualization using matplotlib

Data visualization using matplotlib project instructions Top 5 Most Common Coffee Origins In this visualization I used data from Ankur Chavda on Kaggl

13 Oct 27, 2021