无法在bokeh的图块上绘制点

时间:2019-07-16 06:49:26

标签: python pandas dictionary bokeh

我正在遵循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形并实现地理位置实际有效enter image description here

我怎么了?

1 个答案:

答案 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

希望会有所帮助。