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

python如何繪制路段時變車速熱力圖

 更新時間:2024年09月10日 09:08:19   作者:煮雨小筑  
本文通過熱力圖形式展示了24小時內某個路段的車速變化和特定時刻某條路徑的車速情況,數據是通過Numpy隨機生成的,用以模擬真實的車速情況,文章還展示了如何利用pandas和seaborn庫中的pivot_table()和heatmap()函數生成熱力圖

一、目標

本文旨在通過熱力圖的形式,表示某個路段24h的時序車速變化以及某一時刻某條路徑的車速變化。

二、結果

三、準備數據

注:本文車速數據為Numpy隨機生成

1、各路段時序車速

(因為車速是隨機生成,所以會有相鄰時間速度連續(xù)性不高及午夜速度很慢、中午速度很快等錯誤,讀者可通過其他渠道獲取更加準確的數據)

import numpy as np
import os
import csv

RoadName = ['A','B','C','D','E','F','G']

if not os.path.isfile(r'RoadSpeed.csv'):
    with open('RoadSpeed.csv','a',newline='',encoding='utf-8') as csvfile:
        fieldnames = ['RoadName','Time','Speed']
        writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
        writer.writeheader()
        for road in RoadName:
            for h in range(24):
                for m in range(60):
                    data = {}
                    data['RoadName'] = road
                    data['Time'] = '20210924{:0>2}{:0>2}'.format(h,m)
                    data['Speed'] = str(np.random.uniform(40,120,1)).strip('[]')
                    writer.writerow(data)

圖3-1 生成各路段時變車速

圖3-2 生成的部分數據

2、路段間拓撲關系

拓撲關系指滿足拓撲幾何學原理的各空間數據間的相互關系。即用結點、弧段和多邊形所表示的實體之間的鄰接、關聯、包含和連通關系。

本文中指路段之間的連接順序。(路段順序相連構成一條路徑)

圖3-3 路段拓撲關系(通過networkx繪制)

四、各路段時變車速熱力圖

主要使用pivot_table()和heatmap()兩個函數。可通過以下命令查看具體用法。

import pandas as pd
import seaborn as sns

help(pd.pivot_table)
help(sns.heatmap)

1、pd.pivot_table()

data = pd.pivot_table(df,index = ['RoadName'],columns = ['Time'],values = ['Speed']).reset_index(drop=False)

通過該函數將DataFrame轉為矩陣形式,作為參數傳入heatmap()函數

2、sns.heatmap()

ax = sns.heatmap(data, cmap=plt.cm.RdYlGn,xticklabels=1, yticklabels=1)

3、繪圖代碼

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv(r'RoadSpeed.csv',encoding='utf-8')

#設置中文和負號正常顯示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標簽
#提高圖像清晰度
plt.rcParams['savefig.dpi'] = 400
plt.rcParams['figure.dpi'] = 400

#pivot_table
data = pd.pivot_table(df,index = ['RoadName'],columns = ['Time'],values = ['Speed'])
data.columns = data.columns.get_level_values(1).values
data.sort_index(ascending = True)

#heatmap
plt.figure(figsize=(36, 24))
ax = sns.heatmap(data, cmap=plt.cm.RdYlGn,xticklabels=1, yticklabels=1)

#減少坐標軸密度
times = list(data.columns)
ticks = list(range(0,len(times),15)) # 每隔15min顯示一次
if ticks[-1] != len(times)-1:
    ticks.append(len(times)-1)
labels=[times[i] for i in ticks]

#設置刻度、標簽等
ax.set(xlim=[0,len(times)-1])
ax.set_xticks(ticks)
ax.set_xticklabels(labels,rotation=90,horizontalalignment = 'right',weight = 'bold')
ax.set_xlabel("時間", fontsize=30, color="k") #x軸label的文本和字體大小
ax.set_ylabel("路段", fontsize=30, color="k") #y軸label的文本和字體大小
plt.xticks(fontsize=20,weight = 'bold')  # x軸刻度的字體大小
plt.yticks(fontsize=20,weight = 'bold',rotation = 30)  # y軸刻度的字體大小
ax.set_title("各路段時變車速" ,fontsize=50) #圖片標題文本和字體大小
cax = plt.gcf().axes[-1] 
cax.tick_params(labelsize=60)
plt.savefig('各路段時變車速.png')

運行代碼,得到上圖,橫著看可以得到各路段24h連續(xù)的車速變化;豎著看可以得到一條路徑某一時刻的車速變化 。

但圖例顯示的值是速度,某些情況下,我們只想知道各路段的車況是暢通,輕度擁堵, 中度擁堵還是重度擁堵,這時要對圖例進行修改。

首先根據“《道路交通擁堵度評價方法》(GAT 115-2020)”中關于擁堵等級的定義,如下:

通過編寫程序得出各路段各時刻擁堵等級

設置圖例,加入如下代碼

'''
    設置圖例只顯示1,2,3,4四個數字
    并用暢通、輕度擁擠、中度擁擠、重度擁擠來代替
'''  
c_bar = ax.collections[0].colorbar
c_bar.set_ticks([4,3,2,1])
c_bar.set_ticklabels(['暢通', '輕度擁堵', '中度擁堵','重度擁堵'])

除此之外,讀者也可嘗試通過geopandas繪制道路擁堵等級圖。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python中裝飾器學習總結

    Python中裝飾器學習總結

    這篇文章主要介紹了Python中裝飾器學習總結,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python使用Matplotlib模塊時坐標軸標題中文及各種特殊符號顯示方法

    Python使用Matplotlib模塊時坐標軸標題中文及各種特殊符號顯示方法

    這篇文章主要介紹了Python使用Matplotlib模塊時坐標軸標題中文及各種特殊符號顯示方法,結合具體實例分析了Python使用Matplotlib模塊過程中針對中文及特殊符號的顯示方法,需要的朋友可以參考下
    2018-05-05
  • python實現AHP算法的方法實例(層次分析法)

    python實現AHP算法的方法實例(層次分析法)

    這篇文章主要給大家介紹了關于python實現AHP算法(層次分析法)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 檢查Python中的變量是否是字符串(兩種不同方法)

    檢查Python中的變量是否是字符串(兩種不同方法)

    數據類型是編程語言最重要的特征,它區(qū)分了我們可以存儲的不同類型的數據,如字符串、int和float,這篇文章主要介紹了兩種不同的方法來檢查Python中的變量是否是字符串,需要的朋友可以參考下
    2023-08-08
  • python中__init__()方法詳情

    python中__init__()方法詳情

    這篇文章主要介紹了?python中__init__()方法詳情,python類中定義的函數稱為方法,?init?()方法本質也是一個函數。這個函數的作用是初始化實例后的對象,具體內容請參考下文詳細內容
    2021-11-11
  • python dict 相同key 合并value的實例

    python dict 相同key 合并value的實例

    今天小編就為大家分享一篇python dict 相同key 合并value的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python中二維陣列的變換實例

    python中二維陣列的變換實例

    這篇文章主要介紹了python中二維陣列的變換實例,通過對比兩種不同的方法分析了二維陣列變換的實現方法,需要的朋友可以參考下
    2014-10-10
  • python基礎之文件處理知識總結

    python基礎之文件處理知識總結

    今天帶大家了解python文件處理的相關知識,文中介紹的非常詳細,對正在學習python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Python命名空間的本質和加載順序

    Python命名空間的本質和加載順序

    這篇文章主要介紹了Python命名空間的本質和加載順序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • 基于Python實現簡單排行榜功能

    基于Python實現簡單排行榜功能

    排行榜是一種常見的功能,它可以用于展示和比較數據的排名或分數,本文將詳細介紹如何使用Python實現排行榜功能,感興趣的小伙伴可以了解一下
    2024-02-02

最新評論

巴南区| 饶平县| 济宁市| 合水县| 浦北县| 嘉义县| 乐东| 萝北县| 会同县| 沾益县| 师宗县| 瓮安县| 额济纳旗| 蓝山县| 陆丰市| 长岛县| 香河县| 轮台县| 贵南县| 彝良县| 兴安县| 襄城县| 泗阳县| 抚宁县| 郓城县| 崇明县| 体育| 沁源县| 措勤县| 玉山县| 香河县| 沂源县| 收藏| 克拉玛依市| 巧家县| 芮城县| 罗田县| 惠安县| 吉木乃县| 江永县| 平果县|