2014-11-23 132 views
2

我可以在Python中使用matplotlibBasemap来绘制地球仪,并且可以设置地球的颜色以及我在它上面绘制的任何东西(大洲等)。但是这个地球图像被设置在白色背景上;如何更改该白色背景的颜色?在matplotlib中更改图像背景色底图正投影

这样的代码:

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
from mpl_toolkits.basemap import Basemap 
m = Basemap(projection='ortho',lat_0=0,lon_0=0,resolution='c') 
m.drawmapboundary(fill_color='black') 
m.drawcoastlines(linewidth=1.25, color='#006600') 
plt.savefig('/tmp/out.png') 

产生这一点,与白色背景,我想改变 enter image description here

回答

2

为此,您可以使用以下:

import matplotlib 
import matplotlib.pyplot as plt 
from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt 

matplotlib.use('Agg') 
fig = plt.figure() 
fig.patch.set_facecolor('blue') 
fig.patch.set_alpha(0.7) 
ax = fig.add_subplot(111) 

m = Basemap(projection='ortho',lat_0=0,lon_0=0,resolution='c',ax=ax) 
m.drawmapboundary(fill_color='black') 
m.drawcoastlines(linewidth=1.25, color='#006600') 
plt.savefig('Desktop/out.png',facecolor="red", edgecolor="blue") 

当您使用'plt.show()'显示时,这会创建一个蓝色背景的情节,但保存的地图图像具有红色背景。原因是因为您使用不同的功能将图像渲染到不同的设备。更多细节可以参考herehere。希望这可以帮助。牛逼

enter image description here

+0

很好的回答,但设置颜色为蓝色使用'fig.patch.set_facecolor(“蓝色”)'是没有必要的,并介绍了一些混乱。或者有没有理由这样做,我错过了? – 2014-11-23 22:22:23

+0

@snake_charmer我同意没有必要。我只是想表明,有几种方法可以实现背景着色的结果。也许我应该删除它以避免混淆。 – 2014-11-23 22:47:51

+0

只要两种方法明确表现为两种截然不同的解决方案,两种方法都是有价值的。 – 2014-11-23 23:06:29