ساختن یک نقشه‌ی جهان

با اطّلاعاتی که تا اینجا به دست آورده‌ایم می‌توانیم یک نقشه‌ی ساده‌ی جهان بسازیم. هر چند این نقشه در ابتدا قابل عرضه به نظر نخواهد رسید، زیرا هدف ما این است که پیش از تمرکز بر شکل و مشکلات ارائه، از نمایش درست اطّلاعات اطمینان حاصل کنیم.

این نقشه‌ی اوّلیّه است:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import json
from plotly.graph_objs import Scattergeo, Layout
from plotly import offline

--snip--

for eq_dict in all_eq_dicts:
    --snip--

# Map the earthquakes.
data = [Scattergeo(lon=lons, lat=lats)]

my_layout = Layout(title='Global Earthquakes')

fig = {'data': data, 'layout': my_layout}
offline.plot(fig, filename='global_earthquakes.html')

نمودار Scattergeo و کلاس Layout و سپس ماژول offline را برای ساختن نقشه وارد می‌کنیم. مشابه کاری که برای ساختن نمودار میله‌ای کردیم، لیستی به نام data تعریف می‌کنیم. داخل این لیست شیء Scattergeo را می‌سازیم زیرا شما می‌توانید در هر بصری‌سازی بیش از یک مجموعه‌داده را رسم کنید. نمودار از نوع Scattergeo به شما امکان می‌دهد که نمودار پراکندگی داده‌های جغرافیایی را روی یک نقشه بیندازید. این ساده‌ترین روش استفاده از این نوع نمودار است، کافی‌ست شما لیستی از طول‌ها و لیستی از عرض‌های جغرافیایی را ارائه کنید.

به نمودار عنوانی مناسب می‌دهیم و یک دیکشنری به نام fig شامل داده و چیدمان آن می‌سازیم. در نهایت fig را به همراه یک نام فایل گویا به plot() می‌دهیم. زمانی که این فایل را اجرا می‌کنید باید نقشه‌ای مشابه شکل ۱۶-۷ ببینید. زمین‌لرزه‌ها معمولاً در نزدیکی مرز صفحه‌های زمین رخ می‌دهند و این با آن‌چه در نمودار می‌بینیم مطابقت دارد.

شکل ۱۶-۷: نقشه‌ی ساده‌ای که محلّ وقوع تمام زمین‌لرزه‌های ۲۴ ساعت گذشته را نشان می‌دهد.

تغییرات بسیاری برای معنادار و خواناتر کردن این نمودار می‌توان انجام داد پس اجازه دهید برخی از آن‌ها را پیاده کنیم.

روش دیگر تعیین داده‌های نمودار

پیش از تنظیم نمودار بیایید نگاهی به روش کمی متفاوتی برای تعیین داده‌های نمودارهای پلات‌لی بیندازیم. در نمودار فعلی لیست data در یک خط تعریف می‌شود:

1
data = [Scattergeo(lon=lons, lat=lats)]

این یکی از آسان‌ترین راه‌ها برای تعریف داده‌های یک نمودار در پلات‌لی است. امّا وقتی بخواهید ارائه‌ی خود را شخصی کنید این بهترین روش نیست. روشی معادل برای تعریف داده‌ها برای نمودار فعلی به شکل زیر است:

1
2
3
4
5
data = [{
    'type': 'scattergeo',
    'lon': lons,
    'lat': lats,
}]

در این رویکرد دانسته‌ها در مورد داده‌ها به صورت جفت‌های کلید-مقدار در یک دیکشنری درمی‌آیند. اگر این کد را در eq_plot.py قرار دهید خواهید دید که نمودار مشابهی حاصل خواهد شد. این شکل تعریف به ما امکان می‌دهد که شخصی‌سازی‌ها را نسبت به حالت قبلی آسان‌تر تعیین کنیم.