最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)地圖可視化案例詳解

 更新時間:2022年01月13日 14:38:52   作者:程序員迪迪  
?Python的地圖可視化庫很多,Matplotlib庫雖然作圖很強大,但只能做靜態(tài)地圖。而我今天要講的是交互式地圖庫,分別為pyecharts、folium。感興趣的可以學習一下

?前言

Python的地圖可視化庫很多,Matplotlib庫雖然作圖很強大,但只能做靜態(tài)地圖。而我今天要講的是交互式地圖庫,分別為pyecharts、folium,掌握這兩個庫,基本可以解決你的地圖可視化需求。

一、pyecharts

首先,必須說說強大的pyecharts庫,簡單易用又酷炫,幾乎可以制作任何圖表。pyecharts有v0.5和v1兩個版本,兩者不兼容,最新的v1版本開始支持鏈式調(diào)用,采用options配置圖表。pyecharts在制作地圖方面,包含Map、Geo和Bmap三類,使用Map類支持世界、國家、省市和區(qū)縣四級地圖,使用前需獨立安裝。so,pip它們!

pip install pyecharts
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg

pip完之后,查看下pyecharts版本。

import pyecharts
print(pyecharts.__version__)

毋庸置疑,肯定是最新版本啦,版本號為1.6.2。

Map

在制作地圖前,首先要有數(shù)據(jù),我從Wind數(shù)據(jù)庫導出了全國各省GDP總量數(shù)據(jù),命名為GDP.xlsx,如下圖所示。

有了數(shù)據(jù),咱們就可以用python開始操作了,先把需要的庫import一下。

import pandas as pd  #pandas是強大的數(shù)據(jù)處理庫
from pyecharts.charts import Map
from pyecharts import options as opts

用pandas讀取GDP.xlsx,提取2019年各省GDP數(shù)據(jù)為例,我們來制作地圖。這里注意下zip() 函數(shù),它用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的對象。

data = pd.read_excel('GDP.xlsx')
province = list(data["province"])
gdp = list(data["2019_gdp"])
list = [list(z) for z in zip(province,gdp)]

我們來打印下list,長這樣:

其實就是列表里嵌套列表的數(shù)據(jù)結構,只有這種結構把數(shù)據(jù)添加到地圖中去。我們用Map類中的常用方法add、set_global_opts和render來配置地圖。

c = (
     Map(init_opts=opts.InitOpts(width="1000px", height="600px"))  #初始化地圖大小
     .set_global_opts(
         title_opts=opts.TitleOpts(title="2019年各省GDP分布圖  單位:億元"),  #配置標題
         visualmap_opts=opts.VisualMapOpts(
             type_ = "scatter"   #散點類型
         )
     )
     .add("GDP",list,maptype="china")  #將list傳入,地圖類型為中國地圖
    .render("Map1.html")
)

運行以上代碼,用瀏覽器打開生成的Map1.html,效果如下:

有朋友可能會問了,地圖倒是有了,可你這地圖不好區(qū)分不同省的GDP大小呀。不慌,我們繼續(xù)優(yōu)化以上代碼,給不同省依據(jù)GDP的大小配置不同的顏色,讓你一目了然。

c = (
     Map(init_opts=opts.InitOpts(width="1000px", height="600px")) #可切換主題
     .set_global_opts(
         title_opts=opts.TitleOpts(title="2019年各省GDP分布圖  單位:億元"),
         visualmap_opts=opts.VisualMapOpts(
             min_=1000,
             max_=110000,
             range_text = ['GDP總量(億)顏色區(qū)間:', ''],  #分區(qū)間
             is_piecewise=True,  #定義圖例為分段型,默認為連續(xù)的圖例
            pos_top= "middle",  #分段位置
            pos_left="left",
            orient="vertical",
            split_number=10  #分成10個區(qū)間
        )
    )
    .add("GDP",list,maptype="china")
    .render("Map2.html")
)

運行以上代碼,用瀏覽器打開生成的Map2.html,效果如下:

怎么樣,這下效果是不是好多了,顏色越紅代表GDP越高。你所在的省份2019年GDP處于哪個顏色段呢?當然,對于有些審美較高的朋友可能還是無法滿足你的要求。

既然如此,那我再優(yōu)化下代碼,給地圖添加主題。添加主題很簡單,只要import下ThemeType,然后將主題添加到Mpa()方法內(nèi)。我以ThemeType.DARK為例看下效果。

from pyecharts.globals import ThemeType #引入主題
Map(init_opts=opts.InitOpts(width="1000px", height="600px",theme = ThemeType.DARK)) #添加主題ThemeType.DARK

運行一下看看效果:

有沒有B格上升n個level的感覺,如果你還不滿意,ok,pyecharts內(nèi)置了10余種主題任你切換。蘿卜青菜各有所愛,自個調(diào)去吧~

Geo

Geo與Map類似,可以通過設置maptype參數(shù)選擇地圖類型,所支持的方法也和Map類似,我這里就不贅述了,直接貼代碼。

#Geo地圖-漣漪圖
 import pandas as pd
 from pyecharts import options as opts
 from pyecharts.charts import Geo
 from pyecharts.globals import ChartType
 
 data = pd.read_excel('GDP.xlsx')
 province = list(data["province"])
 gdp = list(data["2019_gdp"])
 list = [list(z) for z in zip(province,gdp)]
 print(list)
 c = (
      Geo()
      .add_schema(maptype="china")
      .add(
          "geo",
           list,  #傳入數(shù)據(jù)
           symbol_size=10, large_threshold=110000,  #設置漣漪大小
           type_=ChartType.EFFECT_SCATTER,   #地圖類型為漣漪圖
     )
      .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
      .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=110000),title_opts=opts.TitleOpts(title="2019年各省GDP漣漪圖"))
      .render("Geomap1.html")
   )

運行一下,效果如下:

Bmap

Bmap是百度地圖的一個接口,你如果Map和Geo搞明白了,Bmap也是分分鐘可以搞定的。不過,有一點要注意,你要先到百度地圖開放平臺注冊,獲取AK才可以調(diào)用哦。注冊地址:https://lbsyun.baidu.com/index.php注冊獲得AK,就可以開心制作地圖啦,以熱力圖為例,代碼如下。

#Bmap-散點圖、熱力圖和漣漪圖
  import pandas as pd
  from pyecharts.charts import BMap
  from pyecharts import options as opts
  from pyecharts.globals import ChartType
  
  data = pd.read_excel('GDP.xlsx')
  province = list(data["province"])
  gdp = list(data["2019_gdp"])
  list = [list(z) for z in zip(province,gdp)]
  print(list)
  c = (
       BMap(init_opts=opts.InitOpts(width="1000px", height="600px"))
       .add_schema(baidu_ak="你的AK", center=[120.13066322374, 30.240018034923])
       .add(
           "GDP",
           list,
           type_="heatmap",  #scatter為散點圖,heatmap為熱力圖,ChartType.EFFECT_SCATTER為漣漪圖
           label_opts=opts.LabelOpts(formatter="")
           )
      .set_global_opts(
          title_opts=opts.TitleOpts(title="2019年各省GDP熱力圖"), visualmap_opts=opts.VisualMapOpts(max_=110000)
     )
      .render("Bmap1.html")
   )

運行后,長這樣:

二、folium

你以為以上幾個地圖就能滿足我查理對數(shù)據(jù)可視化美感的追求,那你太小看查理了,我經(jīng)過研究,發(fā)現(xiàn)folium庫才是吊炸天的存在。

首先,我用python調(diào)取了高德地圖API接口,獲得了廣州市近6000個景點的地理數(shù)據(jù),保存為poi_scenic_spot.csv。以下為部分數(shù)據(jù):

然后安裝folium庫,設置刺激戰(zhàn)場底圖,當然你也可以換其他底圖玩,代碼中提供了mapbox底圖、高德底圖等,任你隨意切換。

#folium-熱力圖
 import pandas as pd
 import folium
 from folium import plugins
 
 data = pd.read_csv('./poi_scenic_spot.csv',encoding='utf-8')
 
 # heatmap1 = folium.Map(location=[23.122373,113.268027], zoom_start=10,control_scale = True) # 繪制地圖,確定聚焦點,默認底圖(加載慢)
 heatmap1 = folium.Map(location=[23.122373,113.268027], zoom_start=10,control_scale = True,tiles='stamen Terrain') #刺激戰(zhàn)場底圖
# heatmap1 = folium.Map(location=[23.122373,113.268027], zoom_start=10,control_scale = True,tiles='Mapbox Bright') #mapbox底圖
# heatmap1 = folium.Map(location=[23.122373,113.268027], zoom_start=10,control_scale = True,tiles='stamentoner') #黑白底圖

# heatmap1 = folium.Map(   #高德底圖
#     location=[23.122373,113.268027],
#     zoom_start=15,
#     control_scale = True,
#     tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
#     attr='&copy; <a  rel="external nofollow" >高德地圖</a>'
#     )

folium.Marker([23.122373,113.268027],popup='<i>查理</i>',icon=folium.Icon(icon='cloud',color='green')).add_to(heatmap1)  #創(chuàng)建中心標記
heatmap1.add_child(plugins.HeatMap([[row["lat"],row["lon"]] for name, row in data.iterrows()]))  #傳入經(jīng)緯度
heatmap1.save("folium_map1.html")  #生成網(wǎng)頁

迫不及待運行了下,效果如下:

哈哈哈哈,好大一只紅燒雞。

熱力圖有點中看不中用啊,看這圖我也很難搞清楚廣州的景點分布情況。那咱換個別的圖試試。

#folium-聚合散點地圖
 import pandas as pd
 import folium
 from folium import plugins
 
 data = pd.read_csv('./poi_scenic_spot.csv',encoding='utf-8')
 
 plotmap1 = folium.Map(location=[23.122373,113.268027], zoom_start=10,control_scale = True,tiles='stamentoner')
 
 folium.Marker([23.122373,113.268027],popup='<p style="color: green">我是J哥</p>',icon=folium.Icon(icon='cloud',color='green')).add_to(plotmap1)  #創(chuàng)建中心標記
 plotmap1.add_child(plugins.MarkerCluster([[row["lat"],row["lon"]] for name, row in data.iterrows()]))
 plotmap1.save('folium_map2.html')

看效果!

你就說酷不酷,炫不炫?

結 語

查理自認為以上歸納還算完整,當然,python的地圖庫還有很多,值得進一步挖掘。

到此這篇關于Python實現(xiàn)地圖可視化案例詳解的文章就介紹到這了,更多相關Python地圖可視化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

南投市| 乌什县| 满洲里市| 宁海县| 宜宾县| 江安县| 安乡县| 崇仁县| 丰都县| 法库县| 资溪县| 巩留县| 沙洋县| 万盛区| 常宁市| 泰宁县| 通许县| 新闻| 宜州市| 华坪县| 洛南县| 新晃| 丰县| 邯郸市| 方正县| 盐城市| 基隆市| 仁化县| 彝良县| 南陵县| 庆元县| 剑川县| 调兵山市| 长垣县| 台湾省| 行唐县| 武平县| 翁源县| 开封市| 淅川县| 连城县|