Vega-Lite / Altair: จะจัดกึ่งกลางหรือครอบตัดแผนที่ของยุโรปได้อย่างไร

ฉันมีข้อมูลบางอย่างเกี่ยวกับประเทศในยุโรป ฉันกำลังพยายามสร้างการแสดงภาพใน Altair / Vega-Lite โดยใช้ข้อมูล world-110m ทุกอย่างทำงานได้ดีในทางเทคนิค ยกเว้นว่าขอบเขตรหัสของประเทศต่างๆ ยังรวมถึงดินแดนอันห่างไกลด้วย ทำให้เกิดแผนที่ที่แย่มากซึ่งมีลักษณะดังนี้:

แผนที่ยุโรปที่ไม่ดี

นี่คือรหัสของฉัน:

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'
)

มีวิธีครอบตัดแผนที่นี้หรือจัดกึ่งกลางแผนที่เพื่อที่ฉันจะได้เฉพาะยุโรปและไม่ใช่ดินแดนอันห่างไกลทั่วโลกหรือไม่?

หรือมีชุดข้อมูลสาธารณะที่ดีกว่าที่ฉันควรใช้ซึ่งรวมเฉพาะยุโรปหรือไม่


person Ragnar Lothbrok    schedule 10.04.2020    source แหล่งที่มา


คำตอบ (1)


ฉันไม่มีชุดข้อมูล df ของคุณ ดังนั้นฉันจึงโพสต์ตัวอย่างที่ค่อนข้างง่าย

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
)

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถควบคุมมุมมองแผนที่ได้ด้วย scale และ center พร้อมด้วยขนาดพล็อตตามจริง (width และ height)

  • scale: พารามิเตอร์การขยาย
  • center: จุดกึ่งกลางของมุมมอง

หากคุณต้องการครอบตัดส่วนใดๆ ของแผนที่เพิ่มเติม clipExtent อาจมีประโยชน์ได้ โปรดใช้ความระมัดระวัง - อาร์เรย์นี้แสดงถึงขนาดพิกเซล ไม่ใช่พิกัดทางภูมิศาสตร์ (ในตัวอย่างข้างต้น ฉันได้ตั้งค่าเป็น [[0, 0], [400, 300]] ดังนั้นจึงคงมุมมอง 400x300 px ทั้งหมดไว้

person Kazuhito    schedule 10.04.2020
comment
มันใช้งานได้ดี! ฉันกำลังดูเอกสารทั้งหมด แต่ก็ไม่รู้ว่าจะอยู่ที่ไหน ขอบคุณ! - person Ragnar Lothbrok; 10.04.2020