绘图参考

点图

这个 pointplot 是一个 geospatial scatter plot 它将数据集中的每个观测值表示为地图上的单个点。这是一个简单的,易于解释的情节,使它成为一个理想的选择,显示简单的点式关系之间的观察。

pointplot 至少需要一些绘图点:

import geoplot as gplt
import geoplot.crs as gcrs
import geopandas as gpd
cities = gpd.read_file(gplt.datasets.get_path('usa_cities'))
gplt.pointplot(cities)
../_images/pointplot-initial.png

这个 hue 参数将颜色映射应用于数据列。这个 legend 参数切换图例。

gplt.pointplot(cities, projection=gcrs.AlbersEqualArea(), hue='ELEV_IN_FT', legend=True)
../_images/pointplot-legend.png

使用更改颜色贴图 cmap . 对于分类颜色映射,请使用 scheme .

import mapclassify as mc
scheme = mc.Quantiles(cities['ELEV_IN_FT'], k=5)
gplt.pointplot(
    cities, projection=gcrs.AlbersEqualArea(),
    hue='ELEV_IN_FT', scheme=scheme, cmap='inferno_r',
    legend=True
)
../_images/pointplot-k.png

不属于 geoplot API被传递给底层 matplotlib.pyplot.scatter instance ,可用于自定义绘图的外观。要将关键字参数传递给图例,请使用 legend_kwargs 争论。

gplt.pointplot(
    cities, projection=gcrs.AlbersEqualArea(),
    hue='ELEV_IN_FT',
    legend=True, legend_kwargs={'orientation': 'horizontal'},
    edgecolor='lightgray', linewidth=0.5
)
../_images/pointplot-kwargs.png

scale 提供可选或附加的可视变量。可以使用调整点的最小和最大大小以适合您的数据 limits 参数。两者结合往往是有益的 scalehue 在一个单一的情节。在这种情况下,可以使用 legend_var 变量,用于控制图例键入的可视变量。

gplt.pointplot(
    cities, projection=gcrs.AlbersEqualArea(),
    hue='ELEV_IN_FT', scale='ELEV_IN_FT', limits=(1, 10), cmap='inferno_r',
    legend=True, legend_var='scale'
)
../_images/pointplot-scale.png

多宝

polyplot在地图上绘制多边形。

import geoplot as gplt
import geoplot.crs as gcrs
import geopandas as gpd
boroughs = gpd.read_file(gplt.datasets.get_path('nyc_boroughs'))
gplt.polyplot(boroughs, projection=gcrs.AlbersEqualArea())
../_images/polyplot-initial.png

polyplot 旨在作为其他更有趣的绘图类型的底图。

ax = gplt.polyplot(
    boroughs, projection=gcrs.AlbersEqualArea(),
    edgecolor='None', facecolor='lightgray'
)
gplt.pointplot(
    collisions[collisions['BOROUGH'].notnull()],
    hue='BOROUGH', ax=ax, legend=True
)
../_images/polyplot-stacked.png

地图

webmap创建一个静态webmap。

import geoplot as gplt
import geoplot.crs as gcrs
import geopandas as gpd
boroughs = gpd.read_file(gplt.datasets.get_path('nyc_boroughs'))
gplt.webmap(boroughs, projection=gcrs.WebMercator())
../_images/webmap-initial.png

webmap 用作其他绘图类型的底图。

ax = gplt.webmap(boroughs, projection=gcrs.WebMercator())
gplt.pointplot(
    collisions[collisions['BOROUGH'].notnull()],
    hue='BOROUGH', ax=ax, legend=True
)
../_images/webmap-stacked.png

合唱团

choropeth获取在某个有意义的多边形层次(例如人口普查区域、州、国家或大陆)上聚合的观察结果,并使用颜色将数据显示给读者。这是一个众所周知的情节类型,最有可能是最通用和最知名的具体空间情节类型。

A basic choropleth requires polygonal geometries and a hue variable.

import geoplot as gplt
import geoplot.crs as gcrs
import geopandas as gpd
boroughs = gpd.read_file(gplt.datasets.get_path('nyc_boroughs'))
gplt.choropleth(boroughs, hue='Shape_Area')
../_images/choropleth-initial.png

使用更改颜色贴图 cmap . 这个 legend 参数切换图例。

gplt.choropleth(
    contiguous_usa, hue='population', projection=gcrs.AlbersEqualArea(),
    cmap='Greens', legend=True
)
../_images/choropleth-cmap.png

不属于 geoplot API被传递给底层 matplotlib.patches.Polygon 对象;这可用于控制打印美学。要将关键字参数传递给图例,请使用 legend_kwargs 争论。

gplt.choropleth(
    contiguous_usa, hue='population', projection=gcrs.AlbersEqualArea(),
    edgecolor='white', linewidth=1,
    cmap='Greens', legend=True, legend_kwargs={'orientation': 'horizontal'}
)
../_images/choropleth-legend-kwargs.png

要指定分类颜色映射,请使用 scheme .

import mapclassify as mc
scheme = mc.FisherJenks(contiguous_usa['population'], k=5)
gplt.choropleth(
    contiguous_usa, hue='population', projection=gcrs.AlbersEqualArea(),
    edgecolor='white', linewidth=1,
    cmap='Greens',
    legend=True, legend_kwargs={'loc': 'lower left'},
    scheme=scheme
)
../_images/choropleth-scheme.png

使用 legend_labelslegend_values 自定义图例中显示的标签和值。

import mapclassify as mc
scheme = mc.FisherJenks(contiguous_usa['population'], k=5)
gplt.choropleth(
    contiguous_usa, hue='population', projection=gcrs.AlbersEqualArea(),
    edgecolor='white', linewidth=1,
    cmap='Greens', legend=True, legend_kwargs={'loc': 'lower left'},
    scheme=scheme,
    legend_labels=[
        '<3 million', '3-6.7 million', '6.7-12.8 million',
        '12.8-25 million', '25-37 million'
    ]
)
../_images/choropleth-labels.png

KDEPlot

Kernel density estimation 是一种非参数估计点观测样本分布函数的技术。KDE是分析数据分布的常用工具;此绘图将此技术应用于地理空间设置。

基本的 kdeplot 将逐点数据作为输入。为了便于解释,我们还将绘制基本的自治区几何图形。

import geoplot as gplt
import geoplot.crs as gcrs
import geopandas as gpd
boroughs = gpd.read_file(gplt.datasets.get_path('nyc_boroughs'))
collisions = gpd.read_file(gplt.datasets.get_path('nyc_collision_factors'))
ax = gplt.polyplot(boroughs, projection=gcrs.AlbersEqualArea())
gplt.kdeplot(collisions, ax=ax)
../_images/kdeplot-initial.png

n_levels 控制等时线的数量。 cmap 控制颜色映射。

ax = gplt.polyplot(boroughs, projection=gcrs.AlbersEqualArea())
gplt.kdeplot(collisions, n_levels=20, cmap='Reds', ax=ax)
../_images/kdeplot-shade.png

shade 切换着色等时线。使用 clip 将打印约束到周围的几何图形。

ax = gplt.polyplot(boroughs, projection=gcrs.AlbersEqualArea())
gplt.kdeplot(collisions, cmap='Reds', shade=True, clip=boroughs, ax=ax)
../_images/kdeplot-clip.png

不属于 geoplot API被传递给 the underlying seaborn.kdeplot instance . 其中最有用的参数之一是 shade_lowest ,它在内核密度估计的最低(基本)层上切换着色。

ax = gplt.polyplot(boroughs, projection=gcrs.AlbersEqualArea())
ax = gplt.kdeplot(collisions, cmap='Reds', shade=True, shade_lowest=True, clip=boroughs)
../_images/kdeplot-shade-lowest.png

地图

卡通图根据一些输入数据的大小扭曲(增长或收缩)地图上的多边形。基本卡通图指定数据、投影和 scale 参数。

import geoplot as gplt
import geoplot.crs as gcrs
import geopandas as gpd
contiguous_usa = gpd.read_file(gplt.datasets.get_path('contiguous_usa'))
gplt.cartogram(contiguous_usa, scale='population', projection=gcrs.AlbersEqualArea())
../_images/cartogram-initial.png

切换图例 legend . 关键字参数可以通过 legend_kwargs 争论。这些参数将传递给基础图例。

gplt.cartogram(
    contiguous_usa, scale='population', projection=gcrs.AlbersEqualArea(),
    legend=True, legend_kwargs={'loc': 'lower right'}
)
../_images/cartogram-trace-legend.png

要将颜色映射添加到绘图,请指定 hue . 使用 cmap 控制颜色映射。对于分类颜色映射,请指定 scheme . 在这个绘图中,我们还添加了原始状态形状的背景轮廓,以获得更好的地理空间背景。

import mapclassify as mc
scheme = mc.Quantiles(contiguous_usa['population'], k=5)
ax = gplt.cartogram(
    contiguous_usa, scale='population', projection=gcrs.AlbersEqualArea(),
    legend=True, legend_kwargs={'bbox_to_anchor': (1, 0.9)}, legend_var='hue',
    hue='population', scheme=scheme, cmap='Greens'
)
gplt.polyplot(contiguous_usa, facecolor='lightgray', edgecolor='white', ax=ax)
../_images/cartogram-cmap.png

使用 legend_labelslegend_values 自定义图例中显示的标签和值。

gplt.cartogram(
    contiguous_usa, scale='population', projection=gcrs.AlbersEqualArea(),
    legend=True, legend_kwargs={'bbox_to_anchor': (1, 0.9)}, legend_var='hue',
    hue='population', k=5, cmap='Greens',
    legend_labels=[
        '<1.4 million', '1.4-3.2 million', '3.2-5.6 million',
        '5.6-9 million', '9-37 million'
    ]
)
../_images/cartogram-legend-labels.png

使用 limits 参数来调整最小和最大比例因子。也可以将自定义缩放函数传递给 scale_func 对绘图应用不同的比例(默认比例函数为线性);请参见 USA City Elevations demo 举个例子。

ax = gplt.cartogram(
    contiguous_usa, scale='population', projection=gcrs.AlbersEqualArea(),
    legend=True, legend_kwargs={'bbox_to_anchor': (1, 0.9)}, legend_var='hue',
    hue='population', k=5, cmap='Greens',
    limits=(0.5, 1)
)
gplt.polyplot(contiguous_usa, facecolor='lightgray', edgecolor='white', ax=ax)
../_images/cartogram-limits.png

桑基

A Sankey diagram 可视化通过网络的流量。它可以用来显示通过系统传输的数据量。此图将Sankey图引入地理空间环境;有助于分析道路网络的交通负荷,例如,不同机场之间的交通量。

基本的 sankey 需要 GeoDataFrame 属于 LineStringMultiPoint 几何形状。为了便于解释,这些例子还包括世界几何。

import geoplot as gplt
import geoplot.crs as gcrs
import geopandas as gpd
la_flights = gpd.read_file(gplt.datasets.get_path('la_flights'))
world = gpd.read_file(gplt.datasets.get_path('world'))

ax = gplt.sankey(la_flights, projection=gcrs.Mollweide())
gplt.polyplot(world, ax=ax, facecolor='lightgray', edgecolor='white')
ax.set_global(); ax.outline_patch.set_visible(True)
../_images/sankey-geospatial-context.png

hue 向地图添加颜色渐变。使用 cmap 控制颜色映射。对于分类颜色映射,请指定 scheme . legend 切换图例。

import mapclassify as mc
scheme = mc.Quantiles(la_flights['Passengers'], k=5)
ax = gplt.sankey(
    la_flights, projection=gcrs.Mollweide(),
    scale='Passengers', hue='Passengers', scheme=scheme, cmap='Greens', legend=True
)
gplt.polyplot(
    world, ax=ax, facecolor='lightgray', edgecolor='white'
)
ax.set_global(); ax.outline_patch.set_visible(True)
../_images/sankey-cmap.png

scale 将体积缩放添加到绘图中。 limits 可用于控制最小和最大线宽。

import mapclassify as mc
scheme = mc.Quantiles(la_flights['Passengers'], k=5)
ax = gplt.sankey(
    la_flights, projection=gcrs.Mollweide(),
    scale='Passengers', limits=(1, 10),
    hue='Passengers', scheme=scheme, cmap='Greens', legend=True
)
gplt.polyplot(
    world, ax=ax, facecolor='lightgray', edgecolor='white'
)
ax.set_global(); ax.outline_patch.set_visible(True)
../_images/sankey-scale.png

关键字参数可以通过 legend_kwargs 争论。这些参数将传递给基础图例。

import mapclassify as mc
scheme = mc.Quantiles(la_flights['Passengers'], k=5)
ax = gplt.sankey(
    la_flights, projection=gcrs.Mollweide(),
    scale='Passengers', limits=(1, 10),
    hue='Passengers', scheme=scheme, cmap='Greens',
    legend=True, legend_kwargs={'loc': 'lower left'}
)
gplt.polyplot(
    world, ax=ax, facecolor='lightgray', edgecolor='white'
)
ax.set_global(); ax.outline_patch.set_visible(True)
../_images/sankey-legend-kwargs.png

沃罗诺

这个 Voronoi region 一个点的位置是一组点,这些点比数据集中的任何其他观测点都更接近该点。Voronoi图是一种空间填充图,它构造数据集的所有Voronoi区域并绘制它们。

Voronoi图是判断点密度的有效方法,与colormap相结合,可以用来推断一组数据中的区域趋势。

基本的 voronoi 指定一些点数据。我们覆盖几何学来帮助解释。

ax = gplt.voronoi(injurious_collisions.head(1000))
gplt.polyplot(boroughs, ax=ax)
../_images/voronoi-simple.png

使用 clip 将结果剪裁到周围几何体。大多数情况下建议这样做。请注意,如果剪辑几何体很复杂,则此操作将花费很长时间;请考虑使用 simplify 加快速度。

ax = gplt.voronoi(
    injurious_collisions.head(100),
    clip=boroughs.simplify(0.001), projection=gcrs.AlbersEqualArea()
)
gplt.polyplot(boroughs, ax=ax)
../_images/voronoi-clip.png

使用 hue 将颜色作为视觉变量添加到绘图中。使用更改颜色贴图 cmap . 要使用分类颜色映射,请设置 scheme . legend 切换图例。

import mapclassify as mc
scheme = mc.NaturalBreaks(injurious_collisions['NUMBER OF PERSONS INJURED'], k=3)
ax = gplt.voronoi(
    injurious_collisions.head(1000), projection=gcrs.AlbersEqualArea(),
    clip=boroughs.simplify(0.001),
    hue='NUMBER OF PERSONS INJURED', scheme=scheme, cmap='Reds',
    legend=True
)
gplt.polyplot(boroughs, ax=ax)
../_images/voronoi-cmap.png

不属于 geoplot API被传递给底层 matplotlib Polygon patches ,可用于自定义绘图的外观。要将关键字参数传递给图例,请使用 legend_kwargs 争论。

import mapclassify as mc
scheme = mc.NaturalBreaks(injurious_collisions['NUMBER OF PERSONS INJURED'], k=3)
ax = gplt.voronoi(
    injurious_collisions.head(1000), projection=gcrs.AlbersEqualArea(),
    clip=boroughs.simplify(0.001),
    hue='NUMBER OF PERSONS INJURED', scheme=scheme, cmap='Reds',
    legend=True,
    edgecolor='white', legend_kwargs={'loc': 'upper left'}
)
gplt.polyplot(boroughs, edgecolor='black', zorder=1, ax=ax)
../_images/voronoi-kwargs.png

四叉树

四叉树是一种将空间分割成越来越小的矩形分形的树数据结构。此图以一系列点或多边形几何图形作为输入,并从它们的质心构建一个choropleth,其中每个区域是一个至少具有 nsig 观察。

四叉树非常有效地演示了密度。它比传统的choropleth更灵活,并且有足够多的点数 can construct a very detailed view of a space .

简单的 quadtree 指定数据集。建议还设置每个箱子的最大观察次数, nmax . 越小越好 nmax ,绘图越详细(最小值为1)。

import geoplot as gplt
import geoplot.crs as gcrs
collisions = gpd.read_file(gplt.datasets.get_path('nyc_collision_factors'))
gplt.quadtree(collisions, nmax=1)
../_images/quadtree-initial.png

使用 clip 将结果剪裁到周围几何体。请注意,如果剪辑几何体很复杂,则此操作将花费很长时间;请考虑使用 simplify 加快速度。

不属于 geoplot API被传递给 underlying matplotlib.patches.Patch instances ,可用于自定义绘图的外观。

gplt.quadtree(
    collisions, nmax=1,
    projection=gcrs.AlbersEqualArea(), clip=boroughs.simplify(0.001),
    facecolor='lightgray', edgecolor='white'
)
../_images/quadtree-clip.png

一个基本的剪辑四叉树图,如这可以作为一个替代 polyplot 作为底图。

ax = gplt.quadtree(
    collisions, nmax=1,
    projection=gcrs.AlbersEqualArea(), clip=boroughs,
    facecolor='lightgray', edgecolor='white', zorder=0
)
gplt.pointplot(collisions, s=1, ax=ax)
../_images/quadtree-basemap.png

使用 hue 将颜色作为视觉变量添加到绘图中。 cmap 控制使用的颜色贴图。 legend 切换图例。分区中包含的各个点的值被聚合,并且每个分区基于该聚合值进行颜色映射。

这种类型的绘图是一种有效的分布度量:绘图输出的随机性越小,变量的空间相关性就越大。

默认聚合函数是 np.mean ,但您可以通过向传递不同的函数来配置聚合 agg .

gplt.quadtree(
    collisions, nmax=1,
    projection=gcrs.AlbersEqualArea(), clip=boroughs,
    hue='NUMBER OF PEDESTRIANS INJURED', cmap='Reds', k=None,
    edgecolor='white', legend=True,
)
../_images/quadtree-k.png

要使用分类颜色映射,请设置 scheme .

gplt.quadtree(
    collisions, nmax=1,
    projection=gcrs.AlbersEqualArea(), clip=boroughs,
    hue='NUMBER OF PEDESTRIANS INJURED', cmap='Reds', scheme='Quantiles',
    edgecolor='white', legend=True
)
../_images/quadtree-hue.png

下面是另一个聚合函数的演示。

gplt.quadtree(
    collisions, nmax=1, agg=np.max,
    projection=gcrs.AlbersEqualArea(), clip=boroughs,
    hue='NUMBER OF PEDESTRIANS INJURED', cmap='Reds',
    edgecolor='white', legend=True
)
../_images/quadtree-agg.png