问题
如何访问绘制GeoDataFrame时创建的colorbar实例?在这个例子中,我用红色标出了法国入侵俄罗斯期间军队的行动和规模,军队规模小于10000人。我怎样才能让颜色条显示红色意味着低于10000?
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from shapely.geometry import Point, LineString
import geopandas as gpd
# ingest troop movement data
PATH = ("https://vincentarelbundock.github.io/Rdatasets/csv/HistData/"
"Minard.troops.csv")
troops = pd.read_csv(PATH)
troops['geometry'] = troops.apply(lambda row: Point(row.long, row.lat), axis=1)
troops = gpd.GeoDataFrame(troops)
# get army group paths
grouped = troops.groupby('group')
groups = [[LineString(group[['long', 'lat']].values), name]
for name, group in grouped]
groups = pd.DataFrame(groups, columns=['geometry', 'army group'])
groups = gpd.GeoDataFrame(groups)
groups.plot(color=['red', 'green', 'blue'], lw=0.5)
# plot troop sizes
cmap = mpl.cm.get_cmap('cool')
cmap.set_under('red')
troops.plot(column='survivors', ax=plt.gca(),
cmap=cmap, vmin=10000, legend=True, markersize=50)
输出:
在这里,
legend=True
试图解决问题
我知道如果我自己做彩条,我就可以通过辩论
extend='min'
我知道我可以通过色条轴(如
this answer
):
cax = plt.gcf().axes[1]
cax.set_label('troop size')
. (也就是说,我在任何地方都看不到那个标签
cax.get_label()
是否返回“部队规模”)
这些轴似乎由两个多边形组成:
In[315]: cax.artists
Out[315]:
[<matplotlib.patches.Polygon at 0x1e0e73c8>,
<matplotlib.patches.Polygon at 0x190c8f28>]
不知道该怎么办。即使我能找到实际的colorbar实例,我也不知道如何将它扩展为
docs for the
Colorbar
class
别提那样的事。
选择
-
extend
关键字通过
GeoDataFrame.plot
功能?
-
我可以在绘图时保存colorbar实例,或者在图中找到它,以某种方式访问它吗?
-
如何使用Matplotlib直接构建colorbar?如果我改变参数,如何避免它偏离曲线图呢?