下面我的python脚本在使用Basemap模块生成的地图上添加了一张图片(在这个简单示例中是一个生成的矩形)和GPS轨迹。
现在我想让两个轨迹都是透明的矩形。轨道通过alpha
kwarg没有问题,但我不知道如何做的图片。在
import matplotlib.pyplot as plt
from PIL import Image
from matplotlib.offsetbox import AnnotationBbox, OffsetImage
from mpl_toolkits.basemap import Basemap
lats = [ 45, 15 ]
lons = [ 0 , 100 ]
fig = plt.figure( dpi = 300 )
ax = plt.subplot(111)
myBaseMap = Basemap( projection='ortho', lat_0=lats[-1], lon_0=lons[-1] )
myBaseMap.bluemarble()
planeImg = Image.new('RGB', (600, 300), color = 'red')
planeXY = myBaseMap( lons[-1], lats[-1] )
x,y = myBaseMap( lons, lats )
plt.plot( x, y, color='r', alpha=0.5, linewidth=3 )
imagebox = OffsetImage( planeImg , zoom=.4 )
ab = AnnotationBbox( imagebox, myBaseMap( lons[-1], lats[-1] ), xybox=( 0., 0. ), xycoords='data', boxcoords='offset points', frameon=False )
ax.add_artist(ab)
plt.show()
此代码生成下面带有透明线的图片。 现在我想用同样的方式使红色矩形透明。在
我试图在批注框和ax上使用set_alpha
方法,但没有成功。
有什么想法吗?在
谢谢。在
如果在创建
OffsetImage
之前为图像设置一个alpha值,那么结果看起来与预期的一样。如何设置枕头图像的alpha值在this answer中说明。请注意,alpha值必须介于0和255之间,而不是0和1。简而言之,您只需在代码中添加一行(请注意,我更改了图像分辨率):要获得以下图像:
除了thomaskühn的回答:如果我用他的代码来处理我的真实图片(这个png红色的透明区域的平面)而不是一个红色的矩形:我得到了下面的图片。在
如你所见,png的透明区域被解释为黑色,因此我在地图上没有平面,而是在它周围有一个透明的黑色正方形。 在Thomas的链接的帮助下,我找到了一种摆脱这种情况的方法,请参阅下面的代码(在运行图片路径之前不要忘记更改图片路径)。在
这段代码生成下面的图片,这正是我正在寻找的。 谢谢你托马斯Kühn。在
相关问题 更多 >
编程相关推荐