import plotly.express as px
import plotly.graph_objects as go
import requests
import json
import pandas as pd
data = pd.read_excel('房价汇总带经纬度.xlsx')
token = 'pk.eyJ1IjoibWFyb2NvNjY2IiwiYSI6ImNrcHhmeDlrYjBmNHUycG9ibDU5ZjRzd2oifQ.2HDoU4mAkfpKts0YZtEmyA'
fig = go.Figure(go.Scattermapbox(
mode="markers",
lon=data.经度,
lat=data.纬度,
hovertext=data.简介, # 悬停显示文本内容
hoverinfo='text',
marker_symbol='marker',
marker_size=6)) # 标记大小
fig.update_layout(mapbox={
"accesstoken": token,
"center": {'lon': 116.2, 'lat': 39.56}, # 地图中心位置
'zoom': 11.8},
margin={'l': 0, 'r': 0, 't': 0, "b": 0} # 地图边距
)
fig = px.scatter_mapbox(data,
lon='经度', # 输入经度坐标
lat='纬度', # 输入纬度
color="单价", # 对应excel的color栏,每个值代表一种颜色
hover_name="简介", # 可以对应excel里面的某一栏
size_max=16, # 上面size尺寸最大值
color_continuous_scale=px.colors.carto.Temps
)
fig.update_layout(mapbox={'accesstoken': token,
"center": {'lon': 116.2, 'lat': 39.56}, # 指定的地图中心
'zoom': 7.48,
'style': 'dark', # 显示的地图类型
},
margin={'l': 0, 'r': 0, 't': 0, 'b': 0})
fig.show() # 显示地图
url = 'http://map.amap.com/service/subway?_1599997789354=&srhdata=1100_drw_beijing.json'
response = requests.get(url)
result = json.loads(response.text)
stations = []
lats = []
lons = []
lines = []
for i in result['l']:
for j in i['st']:
lines.append(i['kn'])
stations.append(j['n'])
lons.append(j['sl'].split(',')[0])
lats.append(j['sl'].split(',')[1])
dataframe = pd.DataFrame({'站名': stations, '线路': lines, '经度': lons, '纬度': lats})
lines = dataframe['线路'].unique().tolist()
for line in lines:
fig.add_traces(go.Scattermapbox(
mode="markers+lines",
lon=dataframe.loc[lambda x: x['线路'] == line]['经度'],
lat=dataframe.loc[lambda x: x['线路'] == line]['纬度'],
hovertext=dataframe.loc[lambda x: x['线路'] == line]['站名'],
hoverinfo='text',
marker_symbol={'a': 'b'},
marker_size={1: 2},
showlegend=False))
for line in lines[1:]:
fig.add_traces(go.Scattermapbox(
mode="markers+lines",
lon=dataframe.loc[lambda x: x['线路'] == line]['经度'],
lat=dataframe.loc[lambda x: x['线路'] == line]['纬度'],
hovertext=dataframe.loc[lambda x: x['线路'] == line]['站名'],
hoverinfo='text',
marker_symbol={'a': 'b'},
marker_size={1: 2},
showlegend=False))
fig.update_layout(mapbox={"accesstoken": token, "center": {'lon': 116.2, 'lat': 39.56}, 'zoom': 11.8},
margin={'l': 0, 'r': 0, 't': 0, "b": 0})