matplotlib收集线宽映射?

时间:2012-11-07 00:53:24

标签: matplotlib

我在道路网络的matplotlib等中创建了一些GIS风格的图,所以我使用LineCollection来相应地存储和表示所有的道路和颜色。这工作正常,我根据标准和以下地图为道路着色:

from matplotlib.colors import ListedColormap,BoundaryNorm
from matplotlib.collections import LineCollection

cmap = ListedColormap(['grey','blue','green','yellow','orange','red','black'])
norm = BoundaryNorm([0,0.5,0.75,0.9,0.95,1.0,1.5,100],cmap.N)

roads = LineCollection(road_segments, array=ratios, cmap=cmap, norm=norm)
axes.add_collection(roads)

这样可以正常工作,但是我真的希望以与颜色映射类似的方式定义线宽 - 每种颜色的范围从0.5到5

有没有人知道这样做的聪明方法?

1 个答案:

答案 0 :(得分:0)

linewidths关键字。

import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

axes = plt.axes()

roads = LineCollection([
                        [[0, 0], [1, 1]],
                        [[0, 1], [1, 0]] 
                        ], 
                       colors=['black', 'red'],
                       linewidths=[3, 8],
                       )
axes.add_collection(roads)

plt.show()

HTH