我看了一下geopandas绘图功能的代码(
https://github.com/geopandas/geopandas/blob/master/geopandas/plotting.py),但我想情节方法只接受三个名称中的一个(“分位数”,“equal_interval”,“fisher_jenks”),而不是直接列出一个箱子或一个pysal列表.esda.mapclassify分类器,如User_Defined.
(我想它可以链接到
issue,其中最后一条评论是关于为“用户定义”分箱定义API).
但是现在我想你可以通过稍微修改和重用我链接的文件中的函数来实现这一点.
例如,你可以像这样重写你自己的plot_dataframe版本:
import numpy as np
def plot_dataframe(s, column, binning, cmap,
linewidth=1.0, figsize=None, **color_kwds):
import matplotlib.pyplot as plt
values = s[column]
values = np.array(binning.yb)
fig, ax = plt.subplots(figsize=figsize)
ax.set_aspect('equal')
mn = values.min()
mx = values.max()
poly_idx = np.array(
(s.geometry.type == 'Polygon') | (s.geometry.type == 'MultiPolygon'))
polys = s.geometry[poly_idx]
if not polys.empty:
plot_polygon_collection(ax, polys, values[poly_idx], True,
vmin=mn, vmax=mx, cmap=cmap,
linewidth=linewidth, **color_kwds)
plt.draw()
return ax
bins = [5, 20, 100, 600, 1000, 3000, 5000, 10000, 20000, 400000]
ud = User_Defined(projected_world_exports['Value'], bins)
plot_dataframe(projected_world_exports, 'Value', ud, 'Greens')