使用 matplotlib 绘制地形作为背景
Plotting terrain as background using matplotlib
这是我的问题。
- 地形由这些区域的海拔高度表示。我上传了 here
现在,我可以使用 matplotlib 中的 contourf 将地形绘制为背景。
fig =plt.figure(figsize=(10,8))
ax = plt.subplot()
xi,yi = np.linspace(195.2260,391.2260,50), np.linspace(4108.9341,4304.9341,50)
height = np.array(list(csv.reader(open("terr_grd.csv","rb"),delimiter=','))).astype('float')
terrf = plt.contourf(xi, yi, height,15, cmap=plt.cm.Blues)
terr = plt.contour(xi, yi, height, 15,
colors='k',alpha=0.5)
plt.clabel(terr, fontsize=9, inline=1)
http://i13.tietuku.com/1d32bfe631e20eee.png
作为背景,可能会影响叠加图(不同颜色混合在一起)。
我在下面上传的一本书上找到的图是很好的可视化艺术。
http://i11.tietuku.com/4d4178c16eb7aaf6.png
作为背景的地形完全不会打扰叠加的流域盆地(绿色)。
那么,如何使用 matplotlib 绘制这种类似的阴暗地形,我尝试了一些颜色图,但我无法得到类似的绘图。
更新
我已经用下面的代码尝试过 alpha 设置:
# Z is 2-d array represent the value of each grid
CS = plt.contourf(xi,yi, Z,2, cmap=plt.cm.Greens,
vmax=abs(Z).max(), vmin=abs(Z).min(),alpha=0.8,zorder = 3)
如图所示:
http://i11.tietuku.com/5bb0b4cb0102ec32.png
不管我用的数据是不是分水岭区域。我致力于 更真实地描绘地形地貌 就像我 post 在这里 post 的图 2。
您只需要 a) 对齐两个图 b) 为图添加 alpha
关键字:
fig =plt.figure(figsize=(10,8))
ax = plt.subplot()
xi,yi = np.linspace(195.2260,391.2260,50), np.linspace(4108.9341,4304.9341,50)
## the image
img=mpimg.imread('4d4178c16eb7aaf6.png')
ax.imshow(img,
extent=[min(xi), max(xi), min(yi), max(yi)])
## the rest
height = np.array(list(csv.reader(open("terr_grd.csv","tr"),delimiter=','))).astype('float')
terrf = ax.contourf(xi, yi, height,15, cmap=plt.cm.Blues,alpha=0.5)
terr = ax.contour(xi, yi, height, 15,
colors='k',alpha=0.5)
ax.clabel(terr, fontsize=9, inline=1)
fig.savefig("theplot.png")
plt.show()
这是我的问题。
- 地形由这些区域的海拔高度表示。我上传了 here
现在,我可以使用 matplotlib 中的 contourf 将地形绘制为背景。
fig =plt.figure(figsize=(10,8))
ax = plt.subplot()
xi,yi = np.linspace(195.2260,391.2260,50), np.linspace(4108.9341,4304.9341,50)
height = np.array(list(csv.reader(open("terr_grd.csv","rb"),delimiter=','))).astype('float')
terrf = plt.contourf(xi, yi, height,15, cmap=plt.cm.Blues)
terr = plt.contour(xi, yi, height, 15,
colors='k',alpha=0.5)
plt.clabel(terr, fontsize=9, inline=1)
http://i13.tietuku.com/1d32bfe631e20eee.png
作为背景,可能会影响叠加图(不同颜色混合在一起)。
我在下面上传的一本书上找到的图是很好的可视化艺术。
http://i11.tietuku.com/4d4178c16eb7aaf6.png
作为背景的地形完全不会打扰叠加的流域盆地(绿色)。
那么,如何使用 matplotlib 绘制这种类似的阴暗地形,我尝试了一些颜色图,但我无法得到类似的绘图。
更新
我已经用下面的代码尝试过 alpha 设置:
# Z is 2-d array represent the value of each grid
CS = plt.contourf(xi,yi, Z,2, cmap=plt.cm.Greens,
vmax=abs(Z).max(), vmin=abs(Z).min(),alpha=0.8,zorder = 3)
如图所示:
http://i11.tietuku.com/5bb0b4cb0102ec32.png
不管我用的数据是不是分水岭区域。我致力于 更真实地描绘地形地貌 就像我 post 在这里 post 的图 2。
您只需要 a) 对齐两个图 b) 为图添加 alpha
关键字:
fig =plt.figure(figsize=(10,8))
ax = plt.subplot()
xi,yi = np.linspace(195.2260,391.2260,50), np.linspace(4108.9341,4304.9341,50)
## the image
img=mpimg.imread('4d4178c16eb7aaf6.png')
ax.imshow(img,
extent=[min(xi), max(xi), min(yi), max(yi)])
## the rest
height = np.array(list(csv.reader(open("terr_grd.csv","tr"),delimiter=','))).astype('float')
terrf = ax.contourf(xi, yi, height,15, cmap=plt.cm.Blues,alpha=0.5)
terr = ax.contour(xi, yi, height, 15,
colors='k',alpha=0.5)
ax.clabel(terr, fontsize=9, inline=1)
fig.savefig("theplot.png")
plt.show()