绘图参考¶
点图¶
这个 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)

这个 hue
参数将颜色映射应用于数据列。这个 legend
参数切换图例。
gplt.pointplot(cities, projection=gcrs.AlbersEqualArea(), hue='ELEV_IN_FT', legend=True)

使用更改颜色贴图 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
)

不属于 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
)

scale
提供可选或附加的可视变量。可以使用调整点的最小和最大大小以适合您的数据 limits
参数。两者结合往往是有益的 scale
和 hue
在一个单一的情节。在这种情况下,可以使用 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'
)

多宝¶
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())

polyplot
旨在作为其他更有趣的绘图类型的底图。
ax = gplt.polyplot(
boroughs, projection=gcrs.AlbersEqualArea(),
edgecolor='None', facecolor='lightgray'
)
gplt.pointplot(
collisions[collisions['BOROUGH'].notnull()],
hue='BOROUGH', ax=ax, legend=True
)

地图¶
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())

webmap
用作其他绘图类型的底图。
ax = gplt.webmap(boroughs, projection=gcrs.WebMercator())
gplt.pointplot(
collisions[collisions['BOROUGH'].notnull()],
hue='BOROUGH', ax=ax, legend=True
)

合唱团¶
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')

使用更改颜色贴图 cmap
. 这个 legend
参数切换图例。
gplt.choropleth(
contiguous_usa, hue='population', projection=gcrs.AlbersEqualArea(),
cmap='Greens', legend=True
)

不属于 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'}
)

要指定分类颜色映射,请使用 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
)

使用 legend_labels
和 legend_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'
]
)

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)

n_levels
控制等时线的数量。 cmap
控制颜色映射。
ax = gplt.polyplot(boroughs, projection=gcrs.AlbersEqualArea())
gplt.kdeplot(collisions, n_levels=20, cmap='Reds', ax=ax)

shade
切换着色等时线。使用 clip
将打印约束到周围的几何图形。
ax = gplt.polyplot(boroughs, projection=gcrs.AlbersEqualArea())
gplt.kdeplot(collisions, cmap='Reds', shade=True, clip=boroughs, ax=ax)

不属于 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)

地图¶
卡通图根据一些输入数据的大小扭曲(增长或收缩)地图上的多边形。基本卡通图指定数据、投影和 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())

切换图例 legend
. 关键字参数可以通过 legend_kwargs
争论。这些参数将传递给基础图例。
gplt.cartogram(
contiguous_usa, scale='population', projection=gcrs.AlbersEqualArea(),
legend=True, legend_kwargs={'loc': 'lower right'}
)

要将颜色映射添加到绘图,请指定 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)

使用 legend_labels
和 legend_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'
]
)

使用 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)

桑基¶
A Sankey diagram 可视化通过网络的流量。它可以用来显示通过系统传输的数据量。此图将Sankey图引入地理空间环境;有助于分析道路网络的交通负荷,例如,不同机场之间的交通量。
基本的 sankey
需要 GeoDataFrame
属于 LineString
或 MultiPoint
几何形状。为了便于解释,这些例子还包括世界几何。
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)

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)

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)

关键字参数可以通过 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)

沃罗诺¶
这个 Voronoi region 一个点的位置是一组点,这些点比数据集中的任何其他观测点都更接近该点。Voronoi图是一种空间填充图,它构造数据集的所有Voronoi区域并绘制它们。
Voronoi图是判断点密度的有效方法,与colormap相结合,可以用来推断一组数据中的区域趋势。
基本的 voronoi
指定一些点数据。我们覆盖几何学来帮助解释。
ax = gplt.voronoi(injurious_collisions.head(1000))
gplt.polyplot(boroughs, ax=ax)

使用 clip
将结果剪裁到周围几何体。大多数情况下建议这样做。请注意,如果剪辑几何体很复杂,则此操作将花费很长时间;请考虑使用 simplify
加快速度。
ax = gplt.voronoi(
injurious_collisions.head(100),
clip=boroughs.simplify(0.001), projection=gcrs.AlbersEqualArea()
)
gplt.polyplot(boroughs, ax=ax)

使用 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)

不属于 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)

四叉树¶
四叉树是一种将空间分割成越来越小的矩形分形的树数据结构。此图以一系列点或多边形几何图形作为输入,并从它们的质心构建一个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)

使用 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'
)

一个基本的剪辑四叉树图,如这可以作为一个替代 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)

使用 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,
)

要使用分类颜色映射,请设置 scheme
.
gplt.quadtree(
collisions, nmax=1,
projection=gcrs.AlbersEqualArea(), clip=boroughs,
hue='NUMBER OF PEDESTRIANS INJURED', cmap='Reds', scheme='Quantiles',
edgecolor='white', legend=True
)

下面是另一个聚合函数的演示。
gplt.quadtree(
collisions, nmax=1, agg=np.max,
projection=gcrs.AlbersEqualArea(), clip=boroughs,
hue='NUMBER OF PEDESTRIANS INJURED', cmap='Reds',
edgecolor='white', legend=True
)
