<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          地圖可視化:geopandas繪制拓?fù)渲貓D

          共 2031字,需瀏覽 5分鐘

           ·

          2021-12-29 15:25

          添加微信號"CNFeffery"加入技術(shù)交流群

          ?

          本文示例代碼及文件已上傳至我的Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes

          ?

          1 簡介

          我們在繪制某些地圖時,為了凸顯出每個獨立的區(qū)域,需要滿足拓?fù)渲?/code>要求,即所有相鄰的區(qū)域不可以用同一種顏色繪制,以前的手繪地圖需要繪制者自行思考設(shè)計具體的著色規(guī)則,而現(xiàn)如今通過計算機的輔助,我們可以快速生成大量的著色方案。

          今天我們就來學(xué)習(xí)配合geopandas如何快速實現(xiàn)地圖的拓?fù)渲?/p>

          2 基于mapclassify的地圖拓?fù)渲?/span>

          對于著色方案的生成,我們需要使用到mapclassify這個第三方庫,以前我的geopandas系列文章分層設(shè)色篇也介紹過其中的諸多功能,而本文需要使用到其特殊的greedy功能。

          以中國縣級單元矢量邊界數(shù)據(jù)為例,它包含了共2900個縣級單元的行政區(qū)劃面矢量要素:

          對于這樣一個典型的面要素眾多的地圖,利用mapclassify.greedy(),我們可以基于面要素之間的鄰接拓?fù)?/span>關(guān)系,快速生成一定配色數(shù)量的方案出來,greedy()的主要參數(shù)如下:

          • gdf:GeoDataFrame型,用于傳入待處理的地理數(shù)據(jù)框
          • strategy:str型,用于設(shè)定拓?fù)渲扇〉木唧w策略,默認(rèn)為balanced(這也是QGIS中拓?fù)渲褂玫姆椒ǎ溆嗫蛇x策略有'largest_first''random_sequential''smallest_last''independent_set''connected_sequential_bfs''connected_sequential_dfs''connected_sequential''saturation_largest_first''DSATUR'等,詳細(xì)介紹見https://networkx.github.io/documentation/stable/reference/algorithms/generated/networkx.algorithms.coloring.greedy_color.html
          • balance:str型,當(dāng)strategy='balanced'時,用于設(shè)定如何進行“平衡”著色,默認(rèn)為'count',可選項如下,其中除了'count'方式以外,其余方式均需要輸入的GeoDataFrame為投影坐標(biāo)系:
            • count:盡量保持每種顏色對應(yīng)的面要素數(shù)量平衡
            • area:盡量保持每種顏色對應(yīng)的面要素面積之和平衡
            • centroid:盡量保持每種顏色對應(yīng)的面要素之間「重心距離」平衡
            • distance:盡量保持每種顏色對應(yīng)的面要素之間「拓?fù)渚嚯x」平衡
          • min_colors:int型,當(dāng)strategy='balanced'時,用于設(shè)置色彩方案「至少」的色彩數(shù)量,最后運算產(chǎn)生的色彩劃分結(jié)果可能會大于這個參數(shù)
          • sw:str型,用于設(shè)定拓?fù)溧徑雨P(guān)系判定策略,'rook'表示「共邊鄰接」'queen'表示「共點鄰接」,默認(rèn)為'queen'
          • min_distance:數(shù)值型,默認(rèn)為None,有時由于數(shù)據(jù)質(zhì)量、精度的原因,可能會導(dǎo)致肉眼看起來的鄰接實際上仍然存在一定的“間距”,這時就可以使用min_distance參數(shù)來設(shè)定距離閾值來幫助greedy捕捉相鄰面要素關(guān)系,即面要素兩兩之間拓?fù)渚嚯x小于min_distance時也視作“鄰接”

          知曉了greedy()的主要參數(shù)后,我們下面來演示如何使用它來輔助制作拓?fù)渲貓D。

          首先我們需要向greedy()中傳入對應(yīng)的面要素GeoDataFramegreedy()會根據(jù)我們的參數(shù)設(shè)定為每一個面生成一個標(biāo)簽,我們只需要將此標(biāo)簽列作為繪圖著色映射列即可,可以看到最終得到的標(biāo)簽方案中共有7種不同標(biāo)簽,雖然按照四色問題的猜想,任何拓?fù)渲貓D只需要4種顏色即可完成色彩填充,但在有限的計算時間內(nèi),greedy()給出了還不錯的方案:

          按照標(biāo)簽進行顏色分配:

          放大仔細(xì)發(fā)現(xiàn),每個鄰接的區(qū)域的確實現(xiàn)了顏色不重合:

          而如果你希望用自定義色彩值來配合標(biāo)簽字段進行映射,則可以參考我下面的做法,將具體的顏色值譬如16進制色彩字符串傳入color參數(shù),這里使用到以前介紹過多次的配色庫palettable


          以上就是本文的全部內(nèi)容,歡迎在評論區(qū)與我進行討論~

          加入知識星球【我們談?wù)摂?shù)據(jù)科學(xué)】

          400+小伙伴一起學(xué)習(xí)!








          · 推薦閱讀?·

          「Python實用秘技01」復(fù)雜zip文件的解壓

          「Python實用秘技02」給Python函數(shù)定“鬧鐘”

          「Python實用秘技03」導(dǎo)出項目的極簡環(huán)境依賴


          瀏覽 124
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99人妻久久 | 最新一区二区三区 | 久久人人爽人人爽人人片aV东京热 | 夜夜国自一区 1080P | 国产五月丁香好好日 |