如何用Python绘制地图
我想用Python画一张地图,但不是那种信息很全的地图,只是把一些小形状组合在一起,反映土地使用情况。
数据大概是这样的:
1 2 2 3 3 2
2 3 3 1 1 2
1 1 1 1 3 3
3 3 3 3 4 1
每个数字代表一种土地使用类型,它们在矩阵中的位置就是它们的坐标。
我之前用VBA做过这个,整个地图由很多小方形组成,代表不同的土地使用情况。但是因为数据量太大,生成地图和删除地图都花了很长时间。
我想问的问题是:
我想知道在Python中,有没有更快的方法来生成这种地图,整体生成,而不是一系列的形状,我觉得这样会更快?
我试过用contourf,如下所示,但它提示“超出轴1的范围”,但实际上,我打印了X、Y和cordi,它们的形状是一样的,为什么还是会超出范围呢?
y = np.arange(0, 4 , 1) x = np.arange(0, 6 , 1) X,Y = np.meshgrid(x,y) # cordi is the matrix containing all the data # pyplot is imported before plt.contourf(X,Y, Cordi[X,Y], 8, alpha=.75, cmap='jet')
非常感谢你的回答!
1 个回答
0
你可以使用 imshow
这个函数,它可以生成类似热图的效果。下面是一个例子:
In [1]: import numpy as np
In [2]: import matplotlib.pyplot as plt
In [3]: coord_data = np.array([[1, 2, 2, 3, 3, 2], [2, 3, 3, 1, 1, 2],
[1, 1, 1, 1, 3, 3], [3, 3, 3, 3, 4, 1]])
In [4]: map = plt.imshow(coord_data)
In [5]: plt.colorbar(map)
Out[5]: <matplotlib.colorbar.Colorbar instance at 0x7f3df2559c20>
In [6]: plt.show()
你可以通过 interpolation
这个参数来设置插值的级别(这里有一些例子),还可以通过 cmap
这个参数来选择使用的颜色(这里有一些颜色映射的例子)。
如果你不使用 interpolation='nearest'
,那么相邻的数据点如果值相同,会看起来像是轮廓线。