欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

?前言

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

一、pyecharts

首先,必須說說強(qiáng)大的pyecharts庫,簡單易用又酷炫,幾乎可以制作任何圖表。pyecharts有v0.5和v1兩個版本,兩者不兼容,最新的v1版本開始支持鏈?zhǔn)秸{(diào)用,采用options配置圖表。pyecharts在制作地圖方面,包含Map、Geo和Bmap三類,使用Map類支持世界、國家、省市和區(qū)縣四級地圖,使用前需獨(dú)立安裝。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ù)庫導(dǎo)出了全國各省GDP總量數(shù)據(jù),命名為GDP.xlsx,如下圖所示。

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

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

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

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ù)結(jié)構(gòu),只有這種結(jié)構(gòu)把數(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分布圖  單位:億元"),  #配置標(biāo)題
         visualmap_opts=opts.VisualMapOpts(
             type_ = "scatter"   #散點(diǎn)類型
         )
     )
     .add("GDP",list,maptype="china")  #將list傳入,地圖類型為中國地圖
    .render("Map1.html")
)

運(yùn)行以上代碼,用瀏覽器打開生成的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,  #定義圖例為分段型,默認(rèn)為連續(xù)的圖例
            pos_top= "middle",  #分段位置
            pos_left="left",
            orient="vertical",
            split_number=10  #分成10個區(qū)間
        )
    )
    .add("GDP",list,maptype="china")
    .render("Map2.html")
)

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

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

既然如此,那我再優(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

運(yùn)行一下看看效果:

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

Geo

Geo與Map類似,可以通過設(shè)置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,  #設(shè)置漣漪大小
           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")
   )

運(yùn)行一下,效果如下:

Bmap

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

#Bmap-散點(diǎn)圖、熱力圖和漣漪圖
  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為散點(diǎn)圖,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")
   )

運(yùn)行后,長這樣:

二、folium

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

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

然后安裝folium庫,設(shè)置刺激戰(zhàn)場底圖,當(dāng)然你也可以換其他底圖玩,代碼中提供了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) # 繪制地圖,確定聚焦點(diǎn),默認(rèn)底圖(加載慢)
 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)建中心標(biāo)記
heatmap1.add_child(plugins.HeatMap([[row["lat"],row["lon"]] for name, row in data.iterrows()]))  #傳入經(jīng)緯度
heatmap1.save("folium_map1.html")  #生成網(wǎng)頁

迫不及待運(yùn)行了下,效果如下:

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

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

#folium-聚合散點(diǎn)地圖
 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)建中心標(biāo)記
 plotmap1.add_child(plugins.MarkerCluster([[row["lat"],row["lon"]] for name, row in data.iterrows()]))
 plotmap1.save('folium_map2.html')

看效果!

你就說酷不酷,炫不炫?

結(jié) 語

查理自認(rèn)為以上歸納還算完整,當(dāng)然,python的地圖庫還有很多,值得進(jìn)一步挖掘。

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

相關(guān)文章

  • pytorch 優(yōu)化器(optim)不同參數(shù)組,不同學(xué)習(xí)率設(shè)置的操作

    pytorch 優(yōu)化器(optim)不同參數(shù)組,不同學(xué)習(xí)率設(shè)置的操作

    這篇文章主要介紹了pytorch 優(yōu)化器(optim)不同參數(shù)組,不同學(xué)習(xí)率設(shè)置的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Python3生成手寫體數(shù)字方法

    Python3生成手寫體數(shù)字方法

    本篇文章給大家分享習(xí)如何Python3生成手寫體數(shù)字方法以及實例代碼分享,有興趣的朋友參考下吧。
    2018-01-01
  • 通過Jython調(diào)用Python腳本的實現(xiàn)方法

    通過Jython調(diào)用Python腳本的實現(xiàn)方法

    Jython 是 Python 的純 Java 實現(xiàn)。她無縫地結(jié)合了 Java 類與 Python,使用戶能以 Python 語言的語法編寫在 Java 虛擬機(jī)上運(yùn)行的 軟件,本文重點(diǎn)給大家介紹通過Jython調(diào)用Python腳本的實現(xiàn)方法,一起看看吧
    2021-06-06
  • 在IPython中執(zhí)行Python程序文件的示例

    在IPython中執(zhí)行Python程序文件的示例

    今天小編就為大家分享一篇在IPython中執(zhí)行Python程序文件的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python爬蟲進(jìn)階之協(xié)程詳解

    python爬蟲進(jìn)階之協(xié)程詳解

    這篇文章主要介紹了python爬蟲進(jìn)階之協(xié)程詳解,coroutine中文翻譯叫協(xié)程,在 Python 中昌指代為協(xié)程對象類型,可以將協(xié)程對象注冊到時間循環(huán)中被調(diào)用,需要的朋友可以參考下
    2023-08-08
  • FFT快速傅里葉變換的python實現(xiàn)過程解析

    FFT快速傅里葉變換的python實現(xiàn)過程解析

    這篇文章主要介紹了FFT快速傅里葉變換的python實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Python3實現(xiàn)二叉樹的最大深度

    Python3實現(xiàn)二叉樹的最大深度

    這篇文章主要介紹了Python3實現(xiàn)二叉樹的最大深度, 文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python?并行加速技巧分享

    Python?并行加速技巧分享

    這篇文章主要介紹了Python?并行加速技巧分享,文章圍繞文章主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Python實現(xiàn)爬取天氣數(shù)據(jù)并可視化分析

    Python實現(xiàn)爬取天氣數(shù)據(jù)并可視化分析

    這篇文章主要和大家分享一個用Python實現(xiàn)的小功能:獲取天氣數(shù)據(jù),進(jìn)行可視化分析,帶你直觀了解天氣情況!感興趣的小伙伴可以學(xué)習(xí)一下
    2022-02-02
  • python實現(xiàn)Dijkstra算法的最短路徑問題

    python實現(xiàn)Dijkstra算法的最短路徑問題

    這篇文章主要介紹了python實現(xiàn)Dijkstra算法的最短路徑問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評論