Altair/Vega 地图未显示。 Chrome 无法加载 SourceMap

Posted

技术标签:

【中文标题】Altair/Vega 地图未显示。 Chrome 无法加载 SourceMap【英文标题】:Altair/Vega map not showing. Chrome fails to load SourceMap 【发布时间】:2021-06-04 21:17:03 【问题描述】:

我正在尝试在欧洲地图上放置一些点。

  import altair as alt
  import pandas as pd

  mydf = pd.DataFrame(
    'name': ['Constanta', 'Turin', 'Madrid', 'Copenhagen', 'Berlin'],
    'lat': [45.1598, 45.0703, 40.4168, 55.6761, 52.5200],
    'long': [28.6348, 7.6869, -3.7038, 12.5683, 13.40]
    )

    alt.Chart(mydf).mark_circle().encode(
        longitude='long',
        latitude='lat',
        size=alt.value(50),
        tooltip='name'
    ).project(
        type= 'mercator',
        scale= 350,                          
        center= [20,50],                     
        clipExtent= [[0, 0], [400, 300]],    
    ).properties(
        width=500,
        height=400
    )

点出现在正确的位置,但地图没有出现,它只是一个空白图。在 Chrome (Jupyter Notebook) 中,我收到以下错误:

DevTools failed to load SourceMap: Could not load content for https://cdn.jsdelivr.net/npm/vega.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE

我尝试切换浏览器,嵌入 Streamlit,更新我的库。

【问题讨论】:

【参考方案1】:

Altair 不会自动显示地图背景;您必须在图层中手动执行此操作,如下所示:

import altair as alt
from vega_datasets import data
import pandas as pd

countries = alt.topo_feature(data.world_110m.url, 'countries')

mydf = pd.DataFrame(
    'name': ['Constanta', 'Turin', 'Madrid', 'Copenhagen', 'Berlin'],
    'lat': [45.1598, 45.0703, 40.4168, 55.6761, 52.5200],
    'long': [28.6348, 7.6869, -3.7038, 12.5683, 13.40]
)

points = alt.Chart(mydf).mark_circle().encode(
    longitude='long',
    latitude='lat',
    size=alt.value(50),
    tooltip='name'
).project(
    type= 'mercator',
    scale= 350,                          
    center= [20,50],                     
    clipExtent= [[0, 0], [400, 300]],    
).properties(
    width=500,
    height=400
)

background = alt.Chart(countries).mark_geoshape(
    fill='#CCCCCC',
    stroke='white'
).project(
    type= 'mercator',
    scale= 350,                          # Magnify
    center= [20,50],                     # [lon, lat]
    clipExtent= [[0, 0], [400, 300]],    # [[left, top], [right, bottom]]
).properties(
    width=400, height=300
)

background + points

旁注:“sourceMap”是一个红鲱鱼:那是javascript concept,不是指地理地图。

【讨论】:

以上是关于Altair/Vega 地图未显示。 Chrome 无法加载 SourceMap的主要内容,如果未能解决你的问题,请参考以下文章

使用 altair / vega-lite / vega-embed 控制画布大小

Plotly express 与 Altair/Vega-Lite 的交互式绘图

如何使 Altair 绘图响应

谷歌地图标记未在 Chrome 中显示

溢出-y:滚动未在 Chrome 中显示滚动条

嵌入谷歌地图不显示在 chrome 中