PYECHARTS 实战 国内/国际地图航线图制作 (一)

本文介绍如何使用PYECHARTS制作国际和国内航线图,通过数据清理、坐标转换,结合Echarts的Geo模块,展示跨国公司的运输线路,帮助直观理解航线分布。
摘要由CSDN通过智能技术生成

项目背景

跨国公司拥有跨境运输和国内运输两种模式,希望通过地图直观的表现出航线,并可视化出不同的运输方式。

国际航线:

准备步骤 接入要使用到的包

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
from pyecharts.charts import Map
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType
import os
import numpy as np
import pandas as pd

第一步 数据清理: 从复杂的进出口表中选取需要的信息,如起始点,终点,运输方式等

inbound_raw_data=pd.read_excel(路径)
inbound_filtered=inbound_raw_data[['Supplier','Sea/Air','FG W']]
inbound_filtered['Destination']='China'
inbound_filtered=inbound_filtered.rename(columns={'Supplier':'origin','Sea/Air':'Transportation'})
#讲字段的大小写统一
Trans_map={'Air':'AIR',
          'Sea':'SEA',
          'Train':'TRAIN',
          'AIR':'AIR',
          'SEA':'SEA',
          'TRAIN':'TRAIN'}
inbound_filtered['Transportation']=inbound_filtered['Transportation'].map(Trans_map)
inbound_group=inbound_filtered.groupby(['origin','Transportation','Destination'],as_index=False).agg({'FG W':sum})
print(inbound_group.head())

countries_map={'FRANCE':'France',
              'JAPAN':'Japan',
              'KOREA':'Korea',
              'SINGAPORE':'Singapore',
              'SPAIN':'Spain',
              'USA':'United States',
              'HONGKONG':'Hongkong',
              'INDONESIA':'Indonesia',
              'MALAYSIA':'Malaysia',
              'France':'France'}
inbound_group['origin']=inbound_group['origin'].map(countries_map)

 第二步 将处理好的数据转化为一一对应的列表。

inbound_all_weight=inbound_group.drop(columns=['Transportation','Destination'])
inbound_Air_line=inbound_Air.drop(columns=['Transportation','FG W'])

inbound_all_weight=inbound_all_weight.groupby(['origin'],as_index=False).sum()
print(inbound_all_weight)
#Data1是起始地点的载货重量 所以只需要orgin和weight 一一对应
data1=[]
 
for index in range(len(inbound_all_weight)):
    city_ionfo=[inbound_all_weight['origin'].values[index],inbound_all_weight['FG W'].values[index]]
    data1.append(city_ionfo)

#Data2是起止地点
data2=[]
for index in range(len(inbound_Air_line)):
    city_ionfo_2=[inbound_Air_line['origin'].values[index],inbound_Air_line['Destination'].values[index]]
    data2.append(city_ionfo_2)
print(data2)

 第三步 将海运和陆运也标记上

inbound_Sea=inbound_group.query('Transportation=="SEA"')
inbound_Sea_line=inbound_Sea.drop(columns=['Transportation','FG W'])
inbound_Sea_line=inbound_Sea_line.dropna()
inbound_Sea_line=inbound_Sea_line.drop_duplicates(['origin'])
data3=[]
for index in range(len(inbound_Sea_line)):
    city_ionfo_3=[inbound_Sea_line['origin'].values[index],inbound_Sea_line['Destination'].values[index]]
    data3.append(city_ionfo_3)
print(data3)


inbound_train=inbound_group.query('Transportation=="TRAIN"')
inbound_train_line=inbound_train.drop(columns=['Transportation','FG W'])
inbound_train_line=inbound_train_line.dropna()
data4=[]
for index in range(len(inbound_train_line)):
    city_ionfo_4=[inbound_train_line['origin'].values[index],inbound_train_line['Destination'].values[index]]
    data4.append(city_ionfo_4)
print(data4)

第四步 Echarts的Geo模块处理国内的数据很简单 使用对应的城市名可以自动定位,但是国际城市需要自己添加经纬度。使用add_coordinate

geo = Geo()
geo.add_coordinate(name="China",longitude=120.6,latitude=31.3)
geo.add_coordinate(name="France",longitude=2.2,latitude=48.52)
geo.add_coordinate(name="Japan",longitude=138.4,latitude=34.8)
geo.add_coordinate(name="Korea",longitude=126.58,latitude=37.33)
geo.add_coordinate(name="Singapore",lo
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值