geopandas+matplotlib製作好看的地圖~

2021-02-21 可視化圖鑑

大家好,我是早起。

在matplotlib中,製作地理圖表需要依賴一些第三方庫,比如basemap、geopandas等,本文將基於geopandas講解如何製作早起Python年度報告中的地圖。

首先我們需要使用pip install geopandas安裝,理論上直接pip就能成功安裝,如果出現了一些錯誤請自行查找解決。

在搞定了相關依賴庫之後,我們進入notebook,先導入相關庫

import pandas as pd
import numpy as np
import geopandas as gp
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 100
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

之後讀取數據,首先讀取需要可視化的數據

data = pd.read_csv('map.csv')

注意,在看別人的教程時一定要注意他的數據格式,比如我的數據如下,一列省份名稱一列關注人數

之後我們使用 geopandas讀取地理坐標

cn_map = gp.GeoDataFrame.from_file('bou2_4p.shp', encoding = 'gb18030') #讀取坐標

這裡的bou2_4p.shp是本地文件,同時該目錄下必須還有bou2_4p.dbf和bou2_4p.shx兩個文件才能讀取成功!

這個看上去像是pandas中dataframe結構的數據,是geopandas中的數據結構,下一步,我們需要對數據進行合併,將粉絲數添加進來

data_gp = gp.GeoDataFrame(data)#轉換數據格式
cn_map = cn_map.rename(index = str, columns = {'NAME':'省份'})
data1 = cn_map.merge(data_gp, on = '省份', how = 'left')

大家要注意數據的變化,下面就是我們熟悉的matplotlib部分

fig, ax = plt.subplots(figsize=(9,6),dpi = 100)
data1.plot('粉絲數',ax = ax)
plt.show()

當然這個默認樣式不夠好看,我們先把xy軸刻度顯示取消了

ax.set_xticks([])
ax.set_yticks([])

再換個主題並添加colorbar,只需要設置legend = True添加顏色條,和cmap設置配色,這個cmap後面我們還會深入講解!

divider = make_axes_locatable(ax)
cax = divider.append_axes("left", size="4%", pad=0.5)
data1.plot('粉絲數',ax = ax,cmap=plt.cm.GnBu,legend = True, cax=cax, edgecolor="black",linewidth = 0.8)

這樣就使用matplotlib做出來一幅還不錯的中國地圖!

關於geopandas後續我還會更新更多的基礎系列講解,本文算是一個簡單的應用,如果你想做出這樣一幅地圖,只需要在後臺回復「地圖」獲取GitHub地址,下載源碼、替換數據即可!

注意,在本文中我一直提示大家關注數據,因為你沒法復現別人的代碼時,大多情況是你的數據和對方的不匹配。

代碼是容易理解的,所以類似這種教程,你需要格外關注別人的原始數據是什麼形狀以及如何對數據進行處理的,方能復現!

相關焦點

  • Matplotlib知識
    在介紹其他內容之前,我們先回顧一下基礎知識,這裡借用 Matplotlib 文檔的一張圖[1]:這些基礎概念十分有用,希望大家能記住其作用及對應的英文。如果遇到更複雜的需求,可以直接在官網文檔(https://matplotlib.org/contents.html)中進行查詢。
  • 如何用matplotlib繪圖呢?
    什麼是matplotlib?使用過python做數據分析的小夥伴都知道,matplotlib是一款命令式、較底層、可定製性強、圖表資源豐富、簡單易用、出版質量級別的python 2D繪圖庫。matplotlib算是python繪圖的元老級庫,類似程式語言裡的C語言。很多其它的python繪圖庫是基於matplotlib開發的,比如seaborn、ggplot、plotnine、holoviews、basemap等。matplotlib可用於python腳本、python shell、jupyter notebook、web等。
  • Matplotlib中文亂碼問題解決方案
    中文亂碼解決方案關鍵詞:Python 中文亂碼 matplotlib 解決方案文末分享字體文件,歡迎自取~準備工作:系統:Windows環境管理器:AnacondaIDE:Jupyter notebook編寫如下代碼,獲取matplotlib包所在的配置文件的路徑import matplotlibmatplotlib.matplotlib_fname() #輸出matplotlib包所在的配置文件的路徑
  • 只要簡單幾步調整,matplotlib做出來的條形圖也很好看!
    有人說matplotlib做出來的圖很低級,早起想說,那是你不會配色本文講解如何調整色以及通過添加注釋,用matplotlib做出一張好看的柱狀圖,也是「早起Python」年度報告中的一幅圖。和之前一樣先分析一下這張圖的思路首先還是先導入包與字體設置,注意這裡沒有使用全局字體而是使用臨時的字體,詳情看組件設置中字體設置文檔import matplotlib
  • 作圖神器Matplotlib文檔解讀
    在前幾天的詞雲圖的製作過程中,我們用到了matplotlib來繪圖。事實上,matplotlib是一個很強大的作圖工具,所以,今天通過幾個實例來介紹下matplotlib的用法。聲明:在寫這篇文章時,我也是matplotlib的小白,僅僅想通過這種方式掌握比Excel更靈活的繪圖方法,以下實例來源於matplotlib的官方文檔,本來想翻譯一下官方文檔的,但由於官方文檔2000多頁,自身能力有限,翻譯起來費時費力,而且很多內容與使用者無關,所以就以windows系統為例,摘取一些重點進行解讀與擴展,如有不對,煩請指出。
  • Matplotlib入門詳細教程
    本篇對matplotlib進行系統性介紹,不會面面俱到,但求體系完備、詳略得當。截至當前,matplotlib發行版本號為3.2.1,適配python3.6及以上版本。matplotlib,是matrix + plot + library的縮寫,雖然命名很是直觀,但個人接觸之初卻是常常不禁嗤之以鼻:類比numpy、pandas、sklearn這些簡潔易寫的庫名,matplotlib由三個單詞縮略而成,冗餘得多;尤其是後面加了個lib,好像不加lib就不是庫?matplo
  • 見識matplotlib:不常見的一面,折線圖!
    眾所周知,matplotlib是python繪圖的基礎包,能夠生成各種各樣2D或者3D的圖形,用法算是多而全的那種,下邊是matplotlib官網首頁作為例子的幾張圖,大家感受一下:什麼?醜拒?不不不,別激動!其實matplotlib一直是一個低調奢華有內涵的包,需要我們透過它樸實無華的外表認清它豐富多彩的內在,來康康這條妖嬈的曲線,有沒有感受到它的召喚?
  • Matplotlib數據可視化!
    聲明:以下使用的是IPython Shell%matplotlib  # 在IPython Shell調用Matplotlib繪圖接口,需要加這行代碼import matplotlib.pyplot as pltimport numpy
  • 如何用 Matplotlib 畫一張好看的圖
    最終目的是用Matplotlib結合Seaborn得到這種可視化效果import matplotlib.pyplot as pltimport seaborn as sns%matplotlib inline# 設置中文字體為微軟雅黑plt.rcParams['font.sans-serif'] = 'SimHei'先用Seaborn生成一張基礎的柱狀圖
  • 記錄matplotlib庫報錯及解決方法
    csdn解決方法一:重裝matplotlib庫pip uninstall matplotlibpip install matplotlib但是操作之後仍是報同樣錯誤。csdn解決方法二:在導入matplotlib庫後,且在matplotlib.pyplot庫被導入前加「matplotlib.use(『agg』)」語句。
  • 動態曲線圖(linechart)--Matplotlib繪製
    (1) https://www.gapminder.org/tools/#$chart-type=linechart(2) https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.plot.html?
  • PyCharm安裝matplotlib教程——安裝好matplotlib但是import報錯
    輸入python -m pip install -U pip setuptools2.輸入python -m pip install matplotlib3.檢查是否已經安裝成功。輸入python -m pip list成功安裝。默認安裝在D:\Python\Lib\site-packages方式二:通過下載matplotlib進行安裝。
  • python matplotlib模塊
    導入模塊導入matplotlib的子模塊import matplotlib.pyplot as pltimport numpy as np2./api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figureimport numpy as np import matplotlib.pyplot as plt #新建figurefig = plt.figure()# 定義數據x = [1
  • matplotlib繪圖邏輯(上)
    matplotlib繪圖邏輯(上)matplotlib是一個基於Python的繪圖庫,具有對2D的完全支持和對3D圖形的有限支持,在Python科學計算社區中廣泛使用。本文對matplotblib的基本繪圖邏輯進行了比較詳細的梳理。寫作過程中參考了很多資料,由於筆記是斷續的,有些可能忘記引用,在此表達感謝。
  • matplotlib基礎
    >matplotlib 架構matplotlib 的主要任務之一,就是提供一套表示和操作圖形對象(主要對象)以及它的內部對象的函數和工具。有了這些附加功能,matplotlib 就能生成以鍵盤按鍵或滑鼠移動觸發的事件的交互式圖表。從邏輯上來講,matplotlib 的整體架構為3層,各層之間單向通信:Scripting (腳本)層。Artist (表現)層。Backend (後端)層。
  • python:matplotlib入門詳細教程
    與之齊名,matplotlib作為數據科學的的另一必備庫,算得上是python可視化領域的元老,更是很多高級可視化庫的底層基礎,其重要性不言而喻。本篇對matplotlib進行系統性介紹,不會面面俱到,但求體系完備、詳略得當。
  • Matplotlib圖鑑|基礎散點圖
    首先導入相關庫並查看版本import matplotlibprint(matplotlib.__version__) #查看Matplotlib版本import pandas as pdprint(pd.
  • 超好看!手把手教你用Matplotlib畫一張好看的圖
    Matplotlib進階圖表繪圖第一篇,手把手教你如何從0到1畫出一張好看的圖。最終目的是用Matplotlib結合Seaborn得到這種可視化效果import matplotlib.pyplot as pltimport seaborn as sns%matplotlib inline# 設置中文字體為微軟雅黑plt.rcParams['font.sans-serif'] = 'SimHei'先用Seaborn生成一張基礎的柱狀圖
  • matplotlib繪圖的核心原理講解
    對比到matplotlib中,就相當於初始化了一張figure(畫布),我們畫的任何圖形,都是在這張figure(畫布)上操作的。接著,張三需要給figure(畫布)分配不同的區域,指定哪一塊兒究竟該畫什麼。對比到matplotlib中,就是需要指定axes(坐標系),每一個axes(坐標系)相當於一張畫布上的一塊區域。
  • Matplotlib 數據可視化基本操作
    object at 0x000002165E3221C8>, <matplotlib.lines.Line2D object at 0x000002165E322048>, <matplotlib.lines.Line2D object at 0x0000021660DFDC08>, <matplotlib.lines.Line2D