在 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,您应该通过 longitude
和 latitude
指定坐标。所以你最后的代码应该是(应该包括投影):
+ @vlplot(data=data,
:point,
longitude = :x,
latitude = :y,
projection={type=:mercator,
scale=scale,
center=[0,35]}
)
我正在使用 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,您应该通过 longitude
和 latitude
指定坐标。所以你最后的代码应该是(应该包括投影):
+ @vlplot(data=data,
:point,
longitude = :x,
latitude = :y,
projection={type=:mercator,
scale=scale,
center=[0,35]}
)