散景世界地图和着色水体

时间:2017-11-21 21:40:56

标签: python-3.x bokeh matplotlib-basemap

在Bokeh to Basemap drawmapboundary中是否有相同的方法可以指定某些颜色?请参阅第一个示例here

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
m = Basemap(width=12000000,height=9000000,projection='lcc',
            resolution='c',lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# draw coastlines.
m.drawcoastlines()
# draw a boundary around the map, fill the background.
# this background will end up being the ocean color, since
# the continents will be drawn on top.
m.drawmapboundary(fill_color='aqua')
# fill continents, set lake color same as ocean color.
m.fillcontinents(color='coral',lake_color='aqua')
plt.show()

我想用水色" aqua"填充水体(例如海洋)。我能够生成黑白世界地图,但我如何专门为海洋着色?

我在here的国家/地区使用JSON文件,然后将其加载GeoJSONDataSource

import bokeh.plotting as bkp
import bokeh.models as bkm

filename = "test.html"
tools = "pan,wheel_zoom,box_zoom,reset,previewsave"

with open("./countries.geo.json", "r") as f:
    countries = bkm.GeoJSONDataSource(geojson=f.read())

p = bkp.figure(width=1000, height=600, tools=tools, title='World Countries', x_axis_label='Longitude', y_axis_label='Latitude')
p.x_range = bkm.Range1d(start=-180, end=180)
p.y_range = bkm.Range1d(start=-90, end=90)
p.patches("xs", "ys", color="white", line_color="black", source=countries)

bkp.output_file(filename)
bkp.save(p, filename)

1 个答案:

答案 0 :(得分:1)

通过查看drawmapboundary的内容来计算。只需要设置背景颜色。 :)

import bokeh.plotting as bkp
import bokeh.models as bkm

filename = "test.html"
tools = "pan,wheel_zoom,box_zoom,reset,previewsave"

with open("./countries.geo.json", "r") as f:
    countries = bkm.GeoJSONDataSource(geojson=f.read())

p = bkp.figure(width=1000, height=600, tools=tools, title='World Countries', x_axis_label='Longitude', y_axis_label='Latitude')
p.background_fill_color = "aqua"
p.x_range = bkm.Range1d(start=-180, end=180)
p.y_range = bkm.Range1d(start=-90, end=90)
p.patches("xs", "ys", color="white", line_color="black", source=countries)

bkp.output_file(filename)
bkp.save(p, filename)