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

Matplotlib繪圖基礎(chǔ)之地圖繪制詳解

 更新時(shí)間:2023年08月15日 09:54:52   作者:databook  
如果分析的數(shù)據(jù)與地域相關(guān),那么,把分析結(jié)果結(jié)合地圖一起展示的話(huà),會(huì)讓可視化的效果得到極大的提升,下面就來(lái)講講如何利用Matplotlib一步步通過(guò)地圖來(lái)展示分析結(jié)果吧

如果分析的數(shù)據(jù)與地域相關(guān),那么,把分析結(jié)果結(jié)合地圖一起展示的話(huà),會(huì)讓可視化的效果得到極大的提升。

比如,分析各省GDP數(shù)據(jù),人口數(shù)據(jù),用柱狀圖,餅圖之類(lèi)的雖然都可以展示分析結(jié)果,

不過(guò),如果能在全國(guó)的地圖上展示各省的分析結(jié)果的話(huà),會(huì)讓人留下更加深刻的印象。

將數(shù)據(jù)的分析結(jié)果展示在地圖上,難點(diǎn)在于:

  • 如何繪制地圖,地圖是展示數(shù)據(jù)的基礎(chǔ),如何繪制出需要的地圖區(qū)域是第一步
  • 數(shù)據(jù)和地圖關(guān)聯(lián),數(shù)據(jù)最終要顯示在地圖上,數(shù)據(jù)如何與地理坐標(biāo)關(guān)聯(lián)也是重要的一步
  • 地圖上展示數(shù)據(jù),也就是要在地圖上繪制不同的顏色或者幾何形狀來(lái)表達(dá)不同的數(shù)據(jù)

解決了上面3個(gè)難題,就能夠結(jié)合地圖做一些基本的數(shù)據(jù)展示了。

本篇通過(guò)一個(gè)基于南京各個(gè)區(qū)地理信息的分析示例,來(lái)演示如何一步步通過(guò)地圖來(lái)展示分析結(jié)果。

1. 繪制地圖

第一步是繪制地圖,其實(shí)地圖就是一塊塊不規(guī)則的多邊形拼接起來(lái)的。

在本篇的示例中,各個(gè)多邊形就是南京的各個(gè)區(qū)。

繪制多邊形不難,難的是如何得到各個(gè)多邊形的頂點(diǎn)坐標(biāo)。

好在現(xiàn)在有很多的開(kāi)放地理信息平臺(tái),可以讓我們獲取到想要的地理信息。

1.1. 獲取地理信息

比如,通過(guò)阿里的DataV數(shù)據(jù)可視化平臺(tái),可以獲取南京各個(gè)區(qū)的地理范圍信息。

在這個(gè)平臺(tái)上,左邊選擇區(qū)域,右邊會(huì)生成對(duì)應(yīng)范圍的地理信息的數(shù)據(jù)。

地理信息數(shù)據(jù)是json格式。

1.2. 展示地理信息

為了讀取地理信息數(shù)據(jù)并展示,需要用到一個(gè) GeoPandas 的庫(kù)。

pip 安裝很簡(jiǎn)單:

$ pip install geopandas

geopandas可以直接讀取DataV數(shù)據(jù)可視化平臺(tái)生成的JSON數(shù)據(jù)并展示。

import geopandas as gpd
df_geo = gpd.read_file(
    "https://geo.datav.aliyun.com/areas_v3/bound/320100_full.json"
)
df_geo

json文件的HTTP地址DataV數(shù)據(jù)可視化平臺(tái)就是在上生成的。

這個(gè)文件中的關(guān)鍵字段就是 geometry,其中的內(nèi)容就是各個(gè)區(qū)的多邊形形狀的各個(gè)頂點(diǎn)的經(jīng)緯度坐標(biāo)。

展示數(shù)據(jù):

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
fig.set_size_inches(8, 8)
# df_geo就是上面通過(guò)geopandas讀取的數(shù)據(jù)
df_geo.plot(
    ax=ax,
    column="name",
    cmap="plasma",
    edgecolor="k",
    legend=True,
    legend_kwds={"loc": "lower left"}
)
plt.show()

其中主要參數(shù)的含義:

  • axmatplotlib生成的子圖,這里就是數(shù)據(jù)要繪制的位置
  • column:作為不同區(qū)域的名稱(chēng),這里就是南京各個(gè)區(qū)的名稱(chēng)
  • cmap:一組顏色,分別對(duì)應(yīng)不同的區(qū)
  • edgecolor:每個(gè)多邊形邊緣的顏色,這里設(shè)置的是黑色
  • legend:是否顯示圖例
  • legend_kwds:設(shè)置圖例的配置信息,這里只設(shè)置了圖例的位置

2. 地圖和數(shù)據(jù)關(guān)聯(lián)

首先生成一些測(cè)試數(shù)據(jù):

# 刪除 df_geo 中一些不必要的列
df_geo = df_geo.drop(columns=["childrenNum", "level", "parent", "subFeatureIndex"])
# 南京各個(gè)區(qū)的名稱(chēng)
area_names = df_geo.loc[:, "name"]
# df_val為測(cè)試數(shù)據(jù),其中name列是各個(gè)區(qū)的名稱(chēng)
# value 列是一些隨機(jī)數(shù),模擬各個(gè)區(qū)的人口,GDP等數(shù)據(jù)
df_val = pd.DataFrame({
    "name": area_names.tolist(),
    "value": np.random.randint(10, 10000, len(area_names))
})

測(cè)試數(shù)據(jù) df_val 模擬其他途徑得到的業(yè)務(wù)數(shù)據(jù),

下面要將 df_val 中的指展示到地圖上,就要先把 df_valdf_geo 結(jié)合起來(lái)。

# 以 name 列作為結(jié)合兩個(gè)數(shù)據(jù)集的依據(jù)
df = pd.merge(df_geo, df_val, on="name", how="left")
df

這樣,我們就得到了同時(shí)包含**地理信息(geometry)業(yè)務(wù)數(shù)據(jù)(value)**的數(shù)據(jù)集了。

3. 地圖上展示數(shù)據(jù)

接下來(lái)就是展示數(shù)據(jù)了,下面演示兩種在地圖上展示數(shù)據(jù)的方式。

3.1. 熱力圖方式

根據(jù) value 值的不同,用漸變色來(lái)顯示不同區(qū)的顏色。

fig, ax = plt.subplots()
fig.set_size_inches(8, 8)
ax.axis("off")
df.plot(
    ax=ax,
    column="value",
    cmap="plasma",
    edgecolor="k",
    legend=True,
    legend_kwds={'label': "value", 'shrink':0.5},
)
for index in df.index:
    x = df.iloc[index].geometry.centroid.x
    y = df.iloc[index].geometry.centroid.y
    name = df.iloc[index]["name"]
    if name in ["建鄴區(qū)", "鼓樓區(qū)", "玄武區(qū)", "秦淮區(qū)"]:
        ax.text(x, y, name, ha="center", va="center", fontsize=8)
    else:
        ax.text(x, y, name, ha="center", va="center")
plt.show()

其中,"建鄴區(qū)", "鼓樓區(qū)", "玄武區(qū)", "秦淮區(qū)" 四個(gè)區(qū)的面積比較小,

所以字體稍微調(diào)小了一些。

3.2. 分類(lèi)展示

value值分為3類(lèi),每類(lèi)用不同的形式來(lái)表示。

  • value < 3000
  • 3000 <= value < 5000
  • value >= 5000
import matplotlib.patches as mpatches
fig, ax = plt.subplots()
fig.set_size_inches(5, 10)
ax.axis("off")
legend_list = []
df[df["value"] < 3000].plot(
    ax=ax,
    color="lightblue",
    edgecolor="k",
    hatch="\\\\",
    legend=False,
)
legend_list.append(
    mpatches.Patch(
        facecolor="lightblue",
        edgecolor="black", hatch="\\\\", label="value<3000"
    )
)
df[(df["value"] >= 3000) & (df["value"] < 5000)].plot(
    ax=ax,
    color="lightgreen",
    edgecolor="k",
    hatch="o",
    legend=False,
)
legend_list.append(
    mpatches.Patch(
        facecolor="lightgreen",
        edgecolor="black", hatch="o", label="3000<=value<5000")
)
df[df["value"] >= 5000].plot(
    ax=ax,
    color="r",
    edgecolor="k",
    hatch="*",
    legend=False,
)
legend_list.append(mpatches.Patch(
    facecolor="r",
    edgecolor="black", hatch="*", label="value>=5000"))
ax.legend(handles = legend_list, 
          loc=(1, 0.5), 
          title="value 等級(jí)", 
          fontsize=12)
plt.show()

4. 總結(jié)

結(jié)合地理信息展示數(shù)據(jù),讓數(shù)據(jù)更加的生動(dòng),特別是很多數(shù)據(jù)分析場(chǎng)景本身就和地理信息密切相關(guān)。

除了基于地域的各種經(jīng)濟(jì)或者人口等等的相關(guān)數(shù)據(jù),

還有各類(lèi)氣象數(shù)據(jù),如能和地理信息結(jié)合展示的話(huà),會(huì)讓人對(duì)整體情況一目了然。

文中用到的主要資源:

以上就是Matplotlib繪圖基礎(chǔ)之地圖繪制詳解的詳細(xì)內(nèi)容,更多關(guān)于Matplotlib地圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pycharm 文件更改目錄后,執(zhí)行路徑未更新的解決方法

    Pycharm 文件更改目錄后,執(zhí)行路徑未更新的解決方法

    今天小編就為大家分享一篇Pycharm 文件更改目錄后,執(zhí)行路徑未更新的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Pyramid Mako模板引入helper對(duì)象的步驟方法

    Pyramid Mako模板引入helper對(duì)象的步驟方法

    ylons中的mako模板,默認(rèn)會(huì)引入一個(gè)helper對(duì)象,我們可以在里面擴(kuò)展方法,應(yīng)對(duì)在模板輸出時(shí)候會(huì)常用的操作,那么在Pyramid中如何默認(rèn)引入同樣的輔助類(lèi)到模板中
    2013-11-11
  • pytorch torch.expand和torch.repeat的區(qū)別詳解

    pytorch torch.expand和torch.repeat的區(qū)別詳解

    這篇文章主要介紹了pytorch torch.expand和torch.repeat的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Python列表創(chuàng)建與銷(xiāo)毀及緩存池機(jī)制

    Python列表創(chuàng)建與銷(xiāo)毀及緩存池機(jī)制

    這篇文章主要介紹了Python列表創(chuàng)建與銷(xiāo)毀及緩存池機(jī)制,文章基于python展開(kāi)對(duì)列表創(chuàng)建與銷(xiāo)毀內(nèi)容的展開(kāi),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • python實(shí)現(xiàn)提取str字符串/json中多級(jí)目錄下的某個(gè)值

    python實(shí)現(xiàn)提取str字符串/json中多級(jí)目錄下的某個(gè)值

    今天小編就為大家分享一篇python實(shí)現(xiàn)提取str字符串/json中多級(jí)目錄下的某個(gè)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python辦公自動(dòng)化之Excel介紹

    Python辦公自動(dòng)化之Excel介紹

    大家好,本篇文章主要講的是Python辦公自動(dòng)化之Excel介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • 基于Python實(shí)現(xiàn)自動(dòng)化郵件發(fā)送系統(tǒng)的完整指南

    基于Python實(shí)現(xiàn)自動(dòng)化郵件發(fā)送系統(tǒng)的完整指南

    在現(xiàn)代軟件開(kāi)發(fā)和自動(dòng)化流程中,郵件通知是一個(gè)常見(jiàn)且實(shí)用的功能,無(wú)論是用于發(fā)送報(bào)告、告警信息還是用戶(hù)提醒,通過(guò) Python 實(shí)現(xiàn)自動(dòng)化的郵件發(fā)送功能都能極大提升工作效率,本文將介紹基于Python實(shí)現(xiàn)自動(dòng)化郵件發(fā)送系統(tǒng)的完整指南,需要的朋友可以參考下
    2025-08-08
  • python cumsum函數(shù)的具體使用

    python cumsum函數(shù)的具體使用

    這篇文章主要介紹了python cumsum函數(shù)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python中最大遞歸深度值的探討

    Python中最大遞歸深度值的探討

    今天小編就為大家分享一篇關(guān)于Python中最大遞歸深度值的探討,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Django數(shù)據(jù)映射(一對(duì)一,一對(duì)多,多對(duì)多)

    Django數(shù)據(jù)映射(一對(duì)一,一對(duì)多,多對(duì)多)

    本文主要介紹了Django數(shù)據(jù)映射(一對(duì)一,一對(duì)多,多對(duì)多),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論

太白县| 贺兰县| 衡东县| 田东县| 湖州市| 武威市| 右玉县| 安远县| 北碚区| 临泉县| 洪泽县| 衢州市| 盘山县| 达拉特旗| 同心县| 阜城县| 英山县| 抚州市| 辉南县| 石景山区| 和林格尔县| 南部县| 阿克陶县| 武安市| 杭锦旗| 榕江县| 临潭县| 崇州市| 克什克腾旗| 抚顺市| 绿春县| 武宣县| 张家口市| 罗山县| 阜新市| 武定县| 灌阳县| 凉山| 南陵县| 巫山县| 吴江市|