2014-11-23 97 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