Vega-Lite / Altair: Bagaimana Cara Memusatkan atau Memotong Peta Eropa?

Saya punya beberapa data tentang negara-negara Eropa. Saya mencoba membuat visualisasi di Altair/Vega-Lite menggunakan data 110m dunia. Semuanya secara teknis berfungsi dengan baik, kecuali kode batas negara yang juga mencakup wilayah yang jauh, sehingga menghasilkan peta mengerikan yang terlihat seperti ini:

Peta Eropa yang Buruk

Ini kode saya:

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

map = alt.Chart(countries).mark_geoshape(
    stroke='black'
    ).encode(
    color=alt.Color('SomeStat:Q', sort="descending", scale=alt.Scale(
        scheme='inferno', domain=(min_value,max_value)), legend=alt.Legend(title="", tickCount=6))
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'CountryId', ['SomeStat', 'CountryName'])
).project(
    type='mercator'
)

Apakah ada cara untuk memotong peta ini atau memusatkannya sehingga saya hanya mendapatkan Eropa dan bukan wilayah yang jauh di seluruh dunia?

Atau, apakah ada kumpulan data publik yang lebih baik yang sebaiknya saya gunakan yang hanya mencakup Eropa?


person Ragnar Lothbrok    schedule 10.04.2020    source sumber


Jawaban (1)


Saya tidak memiliki kumpulan data df Anda, jadi saya memposting contoh yang agak sederhana.

import altair as alt
from vega_datasets import data

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

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

masukkan deskripsi gambar di sini

Anda dapat mengontrol tampilan peta berdasarkan scale dan center, beserta ukuran plot sebenarnya (width dan height).

  • scale: parameter pembesar
  • center: titik tengah pandangan

Jika Anda perlu memangkas lebih lanjut bagian mana pun pada peta, clipExtent dapat berguna. Harap berhati-hati - larik ini mewakili ukuran piksel, bukan koordinat geografis. (Dalam contoh di atas saya telah menyetelnya [[0, 0], [400, 300]] sehingga mempertahankan seluruh tampilan 400x300 px.

person Kazuhito    schedule 10.04.2020
comment
Itu berhasil dengan baik! Saya mencari seluruh dokumentasi, tetapi tidak tahu di mana letaknya. Terima kasih! - person Ragnar Lothbrok; 10.04.2020