我正在遵循https://towardsdatascience.com/exploring-and-visualizing-chicago-transit-data-using-pandas-and-bokeh-part-ii-intro-to-bokeh-5dca6c5ced10示例,使用经度和纬度在图块上绘制一些点。这是我的代码。
from bokeh.plotting import figure, show, output_notebook
from bokeh.tile_providers import CARTODBPOSITRON
p = figure(x_axis_type="mercator", y_axis_type="mercator")
p.add_tile(CARTODBPOSITRON)
p.circle(x = us['Evt_Latitude__c'],
y = us['Evt_Longitude__c'])
output_notebook()
show(p)
尽管按照代码进行了逐步操作,但我的点并没有绘制在US磁贴上,而是绘制在没有状态名称,标界等的灰色磁贴上。请参见附件,但是您可以看到US形并实现地理位置实际有效
我怎么了?
答案 0 :(得分:1)
尝试改用这些行:
from bokeh.tile_providers import get_provider, Vendors
tile_provider = get_provider(Vendors.CARTODBPOSITRON)
p.add_tile(tile_provider)
如果这不起作用,请查看您的Web Mercator格式是否适合。
这是一个从十进制到墨卡托的转换器
def wgs84_to_web_mercator(df, lon="x", lat="y"):
"""Converts decimal longitude/latitude to Web Mercator format"""
k = 6378137
df["x"] = df[lon] * (k * np.pi/180.0)
df["y"] = np.log(np.tan((90 + df[lat]) * np.pi/360.0)) * k
return df
希望会有所帮助。