我正在尝试在python中的形状文件上做热图.我需要制作其中的一些,所以不要每次都阅读.shp.
相反,我认为我可以创建地图边界的lineCollection实例并覆盖两个图像.问题是 - 我似乎无法让两者正确对齐.
这是代码,其中linecol是lineCollection对象.
fig = plt.figure()
ax = fig.add_subplot(111)
ax.contourf(xi,yi,zi)
ax.add_collection(linecol, autolim = False)
plt.show()
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来修复linecol的限制以匹配其他情节的限制?我玩过set_xlim和transforms.Bbox,但似乎无法管理它.
非常感谢您的帮助!
我在pylab中有一个情节,我想剪辑到英国地图的边界.
我还制作了一系列补丁,其中包含每个国家的大纲:一个用于英格兰,一个用于威尔士等.
剪辑情节一个补丁非常出色:
fig = plt.figure()
ax = fig.add_subplot(111)
im = ax.scatter(x,y,c = z)
ax.add_patch(patch)
im.set_clip_path(patch)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试不止一次,它就没有任何东西 - 可以理解,因为情节的任何部分都不在同一时间内.
有谁知道如何使用'OR'类型语句剪辑?(即,如果在此补丁或此补丁内等,请不要剪辑).
我想自动生成一系列剪辑到修补程序的图.如果我尝试重用补丁对象,它会在画布上移动位置.
这个脚本(根据Yann之前的一个问题的答案)演示了正在发生的事情.
import pylab as plt
import scipy as sp
import matplotlib.patches as patches
sp.random.seed(100)
x = sp.random.random(100)
y = sp.random.random(100)
patch = patches.Circle((.75,.75),radius=.25,fc='none')
def doplot(x,y,patch,count):
fig = plt.figure()
ax = fig.add_subplot(111)
im = ax.scatter(x,y)
ax.add_patch(patch)
im.set_clip_path(patch)
plt.savefig(str(count) + '.png')
for count in xrange(4):
doplot(x,y,patch,count)
Run Code Online (Sandbox Code Playgroud)
第一个情节看起来像这样:
但是在第二个'1.png'中,补丁已经移动了..

然而,再次重新绘制不会移动补丁.'2.png'和'3.png'看起来与'1.png'完全相同.
任何人都能指出我正在做错的方向吗?
实际上,我正在使用的补丁相对复杂并且需要一些时间来生成 - 如果可能的话,我宁愿不必每帧都重新制作它们.