在 VegaLite 地图的边缘设置限制

Placing limits on edge of VegaLite map

我正在使用 VegaLite 和 VegaDatasets 来显示世界地图的墨卡托投影,并在特定的纬度和经度处绘制一个点。到目前为止,这可以生成地图:

data = DataFrame(x=[-45], y=[35])
scale = 100
world = dataset("world-110m")
@vlplot(width=700, height=500,
    config={
        view={stroke=:transparent}
    }
) +
@vlplot(data={values=world,
              format={type=:topojson,
                      feature="countries",
                     }},
        mark={type=:geoshape,
              stroke=:darkgray,
              strokeWidth=1},
        projection={type=:mercator,
                    scale=scale,
                    center=[0,35]},
    color={value="#eee"}
)

生产

但是,当我尝试在数据框“data”中绘制点时,我尝试将 X 和 Y 方向的域分别设置为 (-180,180) 和 (-90,90):

+ @vlplot(data=data,
          :point,
          x = {:x, scale = {domain = (-180,180)}},
          y = {:y, scale = {domain = (-90,90)}},
  )

导致下图,其中域不在水平轴和垂直轴的边缘。此外,该点似乎在定义的网格内绘制不正确:

如何使用 @vlplot 语法在我的地图上正确设置 latitude/longitude 网格并绘制单个点?

要在 VegaLite 中绘制 geoshape 和 geopoint,您应该通过 longitudelatitude 指定坐标。所以你最后的代码应该是(应该包括投影):

+ @vlplot(data=data,
          :point,
          longitude = :x,
          latitude = :y,
          projection={type=:mercator,
                    scale=scale,
                    center=[0,35]}
  )