數(shù)據(jù)獲取自高德地圖API,包含了天津市公交線路和站點(diǎn)名稱及其經(jīng)緯度數(shù)據(jù)。
import?pandas?as?pd
df?=?pd.read_excel('site_information.xlsx')
df.head()
字段說(shuō)明:
線路名稱:公交線路的名稱
上下行:0表示上行;1表示下行
站序號(hào):公交線路上行或下行依次經(jīng)過(guò)站的序號(hào)
站名稱:站點(diǎn)名稱
經(jīng)度(分):站點(diǎn)的經(jīng)度
緯度(分):站點(diǎn)的緯度
數(shù)據(jù)字段少,結(jié)構(gòu)也比較簡(jiǎn)單,下面來(lái)充分了解我們的數(shù)據(jù)和進(jìn)行預(yù)處理。

總的數(shù)據(jù)有 30396 條,站名稱缺失了 5 條,緯度(分)缺失了 1 條,經(jīng)度(分)缺失了 38 條,為了處理方便,直接把有缺失值的行刪除。

經(jīng)緯度數(shù)據(jù)是7031.982、2348.1016這樣的,需要將其轉(zhuǎn)換為以度為單位。
df2?=?df1.copy() df2['經(jīng)度(分)']?=?df1['經(jīng)度(分)'].apply(float)?/?60 df2['緯度(分)']?=?df1['緯度(分)'].apply(float)?/?60 df2.head()

處理后的數(shù)據(jù)里,共有 618 條公交線路,4851個(gè)站點(diǎn)數(shù)據(jù)。

重新保存為處理后數(shù)據(jù)
df2.to_excel("處理后數(shù)據(jù).xlsx",?index=False)二、數(shù)據(jù)分析分析天津市公交站點(diǎn)的分布情況
#?-*-?coding:?UTF-8?-*-
"""
import?pandas?as?pd
import?matplotlib.pyplot?as?plt
import?matplotlib?as?mpl
import?random
df?=?pd.read_excel("處理后數(shù)據(jù).xlsx")
x_data?=?df['經(jīng)度(分)']
y_data?=?df['緯度(分)']
colors?=?['#FF0000',?'#0000CD',?'#00BFFF',?'#008000',?'#FF1493',?'#FFD700',?'#FF4500',?'#00FA9A',?'#191970',?'#9932CC']
colors?=?[random.choice(colors)?for?i?in?range(len(x_data))]
mpl.rcParams['font.family']?=?'SimHei'
plt.style.use('ggplot')
#?設(shè)置大小
plt.figure(figsize=(12,?6),?dpi=200)
#?繪制散點(diǎn)圖??經(jīng)度??緯度??傳進(jìn)去???設(shè)置?顏色??點(diǎn)的大小
plt.scatter(x_data,?y_data,?marker="o",?s=9.,?c=colors)
#?添加描述信息?x軸?y軸?標(biāo)題
plt.xlabel("經(jīng)度")
plt.ylabel("緯度")
plt.title("天津市公交站點(diǎn)分布情況")
plt.savefig('經(jīng)緯度散點(diǎn)圖.png')
plt.show()結(jié)果如下:

通過(guò) matplotlib 繪制散點(diǎn)圖可視化天津市公交站點(diǎn)的分布情況,容易看出天津市的公交熱點(diǎn)分布區(qū)域。為了能更形象地分析公交線路網(wǎng)絡(luò),我們可以將數(shù)據(jù)可視化在實(shí)際地圖上,利用 Pyecharts 的BMap。
#?-*-?coding:?UTF-8?-*-
"""
import?pandas?as?pd
from?pyecharts.charts?import?BMap
from?pyecharts?import?options?as?opts
from?pyecharts.globals?import?CurrentConfig
#?引用本地js資源渲染
CurrentConfig.ONLINE_HOST?=?'D:/python/pyecharts-assets-master/assets/'
df?=?pd.read_excel('處理后數(shù)據(jù).xlsx',?encoding='utf-8')
df.drop_duplicates(subset='站名稱',?inplace=True)
longitude?=?list(df['經(jīng)度(分)'])
latitude?=?list(df['緯度(分)'])
datas?=?[]
a?=?[]
for?i,?j?in?zip(longitude,?latitude):
????a.append([i,?j])
datas.append(a)
print(datas)
BAIDU_MAP_AK?=?"改成你的百度地圖AK"
c?=?(
????BMap(init_opts=opts.InitOpts(width="1200px",?height="800px"))
????.add_schema(
????????baidu_ak=BAIDU_MAP_AK,?????#?申請(qǐng)的BAIDU_MAP_AK
????????center=[117.20,?39.13],????#?天津市經(jīng)緯度中心
????????zoom=10,
????????is_roam=True,
????)
????.add(
????????"",
????????type_="lines",
????????is_polyline=True,
????????data_pair=datas,
????????linestyle_opts=opts.LineStyleOpts(opacity=0.2,?width=0.5,?color='red'),
????????#?如果不是最新版本的話可以注釋下面的參數(shù)(效果差距不大)
????????progressive=200,
????????progressive_threshold=500,
????)
)
c.render('公交網(wǎng)絡(luò)地圖.html')結(jié)果如下:

在地圖上可以看到,和平區(qū)、南開(kāi)區(qū)公交線路網(wǎng)絡(luò)密集,交通便利。
公交線路網(wǎng)絡(luò)中 i 節(jié)點(diǎn)代表第 i 條線路,其中節(jié)點(diǎn) i 的度定義為與線路 i 可以經(jīng)過(guò)換乘能夠到達(dá)的線路的數(shù)目,線路網(wǎng)絡(luò)的度大小反映了該條公交線路與其他線路的連通程度,構(gòu)建算法分析公交線路網(wǎng)絡(luò)度的分布。
#?-*-?coding:?UTF-8?-*-
"""
import?xlrd
import?matplotlib.pyplot?as?plt
import?pandas?as?pd
import?matplotlib?as?mpl
df?=?pd.read_excel("site_information.xlsx")
#?用pandas的操作去重???得到每條線路的名稱
loc?=?df['線路名稱'].unique()
#?得到每一條線路名稱的列表
line_list?=?list(loc)
print(line_list)
#?打開(kāi)Excel表格
data?=?xlrd.open_workbook("site_information.xlsx")
#?print(data)???#??在內(nèi)存中
#?獲取特定Sheet??索引為0??也就是第一個(gè)表
table?=?data.sheets()[0]??#?從零開(kāi)始
#?每條線路對(duì)應(yīng)有哪些站點(diǎn)??字典推導(dǎo)式
site_dic?=?{k:?[]?for?k?in?line_list}
site_list?=?[]
for?i?in?range(1,?table.nrows):
????#?每一行的數(shù)據(jù)???返回的是一個(gè)列表
????x?=?table.row_values(i)
????if?x[1]?==?"0":
????????#?上行???站點(diǎn)數(shù)據(jù)??每條線路對(duì)應(yīng)有哪些站點(diǎn)?添加進(jìn)列表
????????site_dic[x[0]].append(x[3])
????????site_list.append(x[3])
????else:
????????continue
#?print(len(site_dic))???#?618條線路
#?print(len(site_list))??#?15248條站點(diǎn)數(shù)據(jù)
print(f"公交網(wǎng)絡(luò)共有?{len(line_list)}?條線路")???#?618條線路
#?先初始化一個(gè)統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)的度的列表??與線路名稱列表里的索引一一對(duì)應(yīng)
node_count?=?[m?*?0?for?m?in?range(len(line_list))]
#?以每條線路為一個(gè)節(jié)點(diǎn)??線路名稱為鍵??????值為一個(gè)列表??里面包含每條路線上行經(jīng)過(guò)的所有站點(diǎn)
sites?=?[site?for?site?in?site_dic.values()]
#?print(sites)
for?j?in?range(len(sites)):??#?類似冒泡法排序??比較多少趟
????for?k?in?range(j,?len(sites)?-?1):??#?每趟比較后??往后推一個(gè)??直到比較完??和防止越界
????????if?len(sites[j])?>?len(sites[k?+?1]):
????????????for?x?in?sites[j]:
????????????????if?x?in?sites[j]?and?x?in?sites[k?+?1]:???#?只要這兩條線路有公共站點(diǎn)??節(jié)點(diǎn)度數(shù)加1
????????????????????node_count[j],?node_count[k?+?1]?=?node_count[j]?+?1,?node_count[k?+?1]?+?1
????????????????????break???#?兩條線路對(duì)應(yīng)在列表索引的值加1???這兩條線的比較結(jié)束
????????else:
????????????for?x?in?sites[k?+?1]:
????????????????if?x?in?sites[j]?and?x?in?sites[k?+?1]:???#?只要這兩條線路有公共站點(diǎn)??節(jié)點(diǎn)度數(shù)加1
????????????????????node_count[j],?node_count[k?+?1]?=?node_count[j]?+?1,?node_count[k?+?1]?+?1
????????????????????break???#?兩條線路對(duì)應(yīng)在列表索引的值加1???這兩條線的比較結(jié)束
#?print(node_count)
#?節(jié)點(diǎn)編號(hào)?與?節(jié)點(diǎn)的度數(shù)索引對(duì)應(yīng)
node_number?=?[y?for?y?in?range(len(node_count))]
#?線性網(wǎng)絡(luò)度的最大值???175
print(f"線路網(wǎng)絡(luò)的度的最大值為:{max(node_count)}")
print(f"線路網(wǎng)絡(luò)的度的最小值為:{min(node_count)}")
print(f"線路網(wǎng)絡(luò)的度的平均值為:{sum(node_count)?/?len(node_count)}")
#?設(shè)置大小??圖的像素
#?設(shè)置字體???matplotlib?不支持顯示中文??自己本地設(shè)置
plt.figure(figsize=(10,?6),?dpi=150)
mpl.rcParams['font.family']?=?'SimHei'
#?繪制每個(gè)節(jié)點(diǎn)度的分布
plt.bar(node_number,?node_count,?color="purple")
#?添加描述信息
plt.xlabel("節(jié)點(diǎn)編號(hào)n")
plt.ylabel("節(jié)點(diǎn)的度數(shù)K")
plt.title("線路網(wǎng)絡(luò)中各節(jié)點(diǎn)的度的大小分布",?fontsize=15)
plt.savefig("線路網(wǎng)絡(luò)中各節(jié)點(diǎn)的度的大小.png")
plt.show() 結(jié)果如下:
公交網(wǎng)絡(luò)共有 618 條線路
線路網(wǎng)絡(luò)的度的最大值為:175
線路網(wǎng)絡(luò)的度的最小值為:0
線路網(wǎng)絡(luò)的度的平均值為:55.41423948220065

import?xlrd
import?matplotlib.pyplot?as?plt
import?pandas?as?pd
import?matplotlib?as?mpl
import?collections
df?=?pd.read_excel("site_information.xlsx")
#?用pandas的操作去重???得到每條線路的名稱
loc?=?df['線路名稱'].unique()
#?得到每一條線路名稱的列表
line_list?=?list(loc)
print(line_list)
#?打開(kāi)Excel表格
data?=?xlrd.open_workbook("site_information.xlsx")
#?print(data)???#??在內(nèi)存中
#?獲取特定Sheet??索引為0??也就是第一個(gè)表
table?=?data.sheets()[0]??#?從零開(kāi)始
#?每條線路對(duì)應(yīng)有哪些站點(diǎn)??字典推導(dǎo)式
site_dic?=?{k:?[]?for?k?in?line_list}
site_list?=?[]
for?i?in?range(1,?table.nrows):
????#?每一行的數(shù)據(jù)???返回的是一個(gè)列表
????x?=?table.row_values(i)
????if?x[1]?==?"0":
????????#?上行???站點(diǎn)數(shù)據(jù)??每條線路對(duì)應(yīng)有哪些站點(diǎn)?添加進(jìn)列表
????????site_dic[x[0]].append(x[3])
????????site_list.append(x[3])
????else:
????????continue
#?print(len(site_dic))???#?618條線路
#?print(len(site_list))??#?15248條站點(diǎn)數(shù)據(jù)
#?先初始化一個(gè)統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)的度的列表??與線路名稱列表里的索引一一對(duì)應(yīng)
node_count?=?[m?*?0?for?m?in?range(len(line_list))]
#?以每條線路為一個(gè)節(jié)點(diǎn)??線路名稱為鍵??????值為一個(gè)列表??里面包含每條路線上行經(jīng)過(guò)的所有站點(diǎn)
sites?=?[site?for?site?in?site_dic.values()]
#?print(sites)
for?j?in?range(len(sites)):??#?類似冒泡法排序??比較多少趟
????for?k?in?range(j,?len(sites)?-?1):??#?每趟比較后??往后推一個(gè)??直到比較完??和防止越界
????????if?len(sites[j])?>?len(sites[k?+?1]):
????????????for?x?in?sites[j]:
????????????????if?x?in?sites[j]?and?x?in?sites[k?+?1]:???#?只要這兩條線路有公共站點(diǎn)??節(jié)點(diǎn)度數(shù)加1
????????????????????node_count[j],?node_count[k?+?1]?=?node_count[j]?+?1,?node_count[k?+?1]?+?1
????????????????????break???#?兩條線路對(duì)應(yīng)在列表索引的值加1???這兩條線的比較結(jié)束
????????else:
????????????for?x?in?sites[k?+?1]:
????????????????if?x?in?sites[j]?and?x?in?sites[k?+?1]:???#?只要這兩條線路有公共站點(diǎn)??節(jié)點(diǎn)度數(shù)加1
????????????????????node_count[j],?node_count[k?+?1]?=?node_count[j]?+?1,?node_count[k?+?1]?+?1
????????????????????break???#?兩條線路對(duì)應(yīng)在列表索引的值加1???這兩條線的比較結(jié)束
#?print(node_count)
#?節(jié)點(diǎn)編號(hào)?與?節(jié)點(diǎn)的度數(shù)索引對(duì)應(yīng)
node_number?=?[y?for?y?in?range(len(node_count))]
#?線性網(wǎng)絡(luò)度的最大值???175
#?print(max(node_count))
#?設(shè)置大小??圖的像素
#?設(shè)置字體???matplotlib?不支持顯示中文??自己本地設(shè)置
plt.figure(figsize=(10,?6),?dpi=150)
mpl.rcParams['font.family']?=?'SimHei'
#?分析節(jié)點(diǎn)的度K的概率分布
#?統(tǒng)計(jì)節(jié)點(diǎn)的度為K的?分別有多少個(gè)
node_count?=?collections.Counter(node_count)
node_count?=?node_count.most_common()
#?點(diǎn)
node_dic?=?{_k:?_v?for?_k,?_v?in?node_count}
#?按鍵從小到大排序???得到一個(gè)列表??節(jié)點(diǎn)的度
sort_node?=?sorted(node_dic)
#?按順序得到鍵對(duì)應(yīng)的值???即有相同節(jié)點(diǎn)的度的個(gè)數(shù)
sort_num?=?[node_dic[q]?for?q?in?sort_node]
#?概率分布中度平均值??總的度數(shù)加起來(lái)??/?個(gè)數(shù)
#?print(sum(sort_node)/len(sort_node))
#?概率分布中最大的度值???也就個(gè)數(shù)最多那個(gè)
print(f"概率分布中概率最大的度值為:{max(sort_num)}")
probability?=?[s1?/?sum(sort_num)?for?s1?in?sort_num]???#?概率分布
print(probability)
#?天津市公交線路節(jié)點(diǎn)概率分布圖像
plt.bar(sort_node,?probability,?color="red")
#?添加描述信息
plt.xlabel("節(jié)點(diǎn)的度K")
plt.ylabel("節(jié)點(diǎn)度為K的概率P(K)")
plt.title("線路網(wǎng)絡(luò)中節(jié)點(diǎn)度的概率分布",?fontsize=15)
plt.savefig("線路網(wǎng)絡(luò)中節(jié)點(diǎn)度的概率分布.png")
plt.show() 結(jié)果如下:
概率分布中概率最大的度值為:16

天津市公交線路網(wǎng)絡(luò)的度分布如上圖所示,本文收集的天津市線路網(wǎng)絡(luò)共有 618 條線路組成,線路網(wǎng)絡(luò)的度的最大值為175。概率分布中概率最大的度值為16,度平均值為55.41,表明天津市公交網(wǎng)絡(luò)提供的換乘機(jī)會(huì)較多,使得可達(dá)性較高。其中概率較大的度值大多集中在 7~26 之間。使得節(jié)點(diǎn)強(qiáng)度分布相對(duì)來(lái)說(shuō)不夠均勻,造成天津市很多路段公交線路較少,少數(shù)路段經(jīng)過(guò)線路過(guò)于密集,造成資源的浪費(fèi)。


聚類系數(shù)是研究節(jié)點(diǎn)鄰居之間的連接緊密程度,因此不必考慮邊的方向。對(duì)于有向圖,將其當(dāng)成無(wú)向圖來(lái)處理。網(wǎng)絡(luò)聚類系數(shù)大,表明網(wǎng)絡(luò)中節(jié)點(diǎn)與其附近節(jié)點(diǎn)之間的連接緊密度程度高,即與實(shí)際站點(diǎn)之間的公交線路連接密集。計(jì)算得到天津公交復(fù)雜網(wǎng)絡(luò)的聚類系數(shù)為0.091,相對(duì)其他城市較低。
根據(jù)公式:

同規(guī)模的隨機(jī)網(wǎng)絡(luò)聚集系數(shù)約為0.00044,進(jìn)一步體現(xiàn)了網(wǎng)絡(luò)的小世界特性。
import?xlrd
import?matplotlib.pyplot?as?plt
import?pandas?as?pd
import?matplotlib?as?mpl
#?讀取數(shù)據(jù)
df?=?pd.read_excel("site_information.xlsx")
#?用pandas的操作去重???得到每條線路的名稱
loc?=?df['線路名稱'].drop_duplicates()
#?得到每一條線路名稱的列表??按照Excel表里以次下去的順序
line_list?=?list(loc)
#?print(line_list)
#?打開(kāi)Excel表格
data?=?xlrd.open_workbook("site_information.xlsx")
#?print(data)???#??在內(nèi)存中
#?獲取特定Sheet??索引為0??也就是第一個(gè)表
table?=?data.sheets()[0]??#?從零開(kāi)始
#?每條線路對(duì)應(yīng)有哪些站點(diǎn)??字典推導(dǎo)式
site_dic?=?{k:?[]?for?k?in?line_list}
site_list?=?[]
for?i?in?range(1,?table.nrows):
????#?每一行的數(shù)據(jù)???返回的是一個(gè)列表
????x?=?table.row_values(i)
????if?x[1]?==?"0":
????????#?只取上行站點(diǎn)數(shù)據(jù)??每條線路對(duì)應(yīng)有哪些站點(diǎn)?添加進(jìn)列表
????????site_dic[x[0]].append(x[3])
????????site_list.append(x[3])
????else:
????????continue
#?print(len(site_dic))???#?618條線路
#?print(len(site_list))??#?15248條站點(diǎn)數(shù)據(jù)
#?先初始化一個(gè)統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)的度的列表??與線路名稱列表里的索引一一對(duì)應(yīng)
node_count?=?[m?*?0?for?m?in?range(len(line_list))]
#?以每條線路為一個(gè)節(jié)點(diǎn)??線路名稱為鍵??????值為一個(gè)列表??里面包含每條路線上行經(jīng)過(guò)的所有站點(diǎn)
sites?=?[site?for?site?in?site_dic.values()]
#?print(sites)
#?統(tǒng)計(jì)各節(jié)點(diǎn)的度
for?j?in?range(len(sites)?-?1):??#?類似冒泡法排序??比較多少趟
????for?k?in?range(j,?len(sites)?-?1):??#?每趟比較后??往后推一個(gè)??直到比較完??和防止越界
????????if?len(sites[j])?>?len(sites[k?+?1]):
????????????for?x?in?sites[j]:
????????????????if?x?in?sites[j]?and?x?in?sites[k?+?1]:???#?只要這兩條線路有公共站點(diǎn)??節(jié)點(diǎn)度數(shù)加1
????????????????????node_count[j],?node_count[k?+?1]?=?node_count[j]?+?1,?node_count[k?+?1]?+?1
????????????????????break???#?兩條線路對(duì)應(yīng)在列表索引的值加1???這兩條線的比較結(jié)束
????????else:
????????????for?x?in?sites[k?+?1]:
????????????????if?x?in?sites[j]?and?x?in?sites[k?+?1]:???#?只要這兩條線路有公共站點(diǎn)??節(jié)點(diǎn)度數(shù)加1
????????????????????node_count[j],?node_count[k?+?1]?=?node_count[j]?+?1,?node_count[k?+?1]?+?1
????????????????????break???#?兩條線路對(duì)應(yīng)在列表索引的值加1???這兩條線的比較結(jié)束
#?找到該節(jié)點(diǎn)的鄰居節(jié)點(diǎn)??鄰居節(jié)點(diǎn)間實(shí)際的邊數(shù)
Ei?=?[]
#?對(duì)每條線路進(jìn)行找鄰接節(jié)點(diǎn)??并統(tǒng)計(jì)其鄰接節(jié)點(diǎn)點(diǎn)實(shí)際的邊數(shù)
for?a?in?range(len(sites)):
????neighbor?=?[]
????if?node_count[a]?==?0:
????????Ei.append(0)
????????continue
????if?node_count[a]?==?1:
????????Ei.append(0)
????????continue
????for?b?in?range(len(sites)):
????????if?a?==?b:????#?自身??不比
????????????continue
????????if?len(sites[a])?>?len(sites[b]):???#?從站點(diǎn)多的線路里選取站點(diǎn)???看是否有公共站點(diǎn)
????????????for?x?in?sites[a]:
????????????????if?x?in?sites[a]?and?x?in?sites[b]:??#?找到鄰居節(jié)點(diǎn)
????????????????????neighbor.append(sites[b])
????????????????????break
????????else:
????????????for?x?in?sites[b]:
????????????????if?x?in?sites[a]?and?x?in?sites[b]:??#?找到鄰居節(jié)點(diǎn)
????????????????????neighbor.append(sites[b])
????????????????????break
????#?在鄰居節(jié)點(diǎn)中判斷這些節(jié)點(diǎn)的實(shí)際邊數(shù)??又類似前面的方法??判斷兩兩是否相連
????count?=?0
????for?c?in?range(len(neighbor)?-?1):
????????for?d?in?range(c,?len(neighbor)?-?1):??#?每趟比較后??往后推一個(gè)??直到比較完??和防止越界
????????????try:
????????????????if?len(sites[c])?>?len(sites[d?+?1]):
????????????????????for?y?in?sites[c]:
????????????????????????if?y?in?sites[c]?and?y?in?sites[d?+?1]:??#?鄰居節(jié)點(diǎn)這兩個(gè)也相連
????????????????????????????count?+=?1
????????????????????????????break
????????????????????????else:
????????????????????????????continue
????????????????else:
????????????????????for?y?in?sites[d?+?1]:
????????????????????????if?y?in?sites[c]?and?y?in?sites[d?+?1]:??#?鄰居節(jié)點(diǎn)這兩個(gè)也相連
????????????????????????????count?+=?1
????????????????????????????break
????????????????????????else:
????????????????????????????continue
????????????except?IndexError:
????????????????break
????Ei.append(count)
#?每個(gè)節(jié)點(diǎn)的鄰居節(jié)點(diǎn)間實(shí)際相連的邊數(shù)
#?print(Ei)
#?節(jié)點(diǎn)編號(hào)?與?節(jié)點(diǎn)的度數(shù)索引對(duì)應(yīng)
node_number?=?[y?for?y?in?range(len(node_count))]
#?設(shè)置字體???matplotlib?不支持顯示中文??自己本地設(shè)置
mpl.rcParams['font.family']?=?'SimHei'
#?設(shè)置大小??圖的像素
plt.figure(figsize=(10,?6),?dpi=150)
#?公交線路網(wǎng)絡(luò)的聚類系數(shù)分布圖像???相鄰節(jié)點(diǎn)的連通程度
Ci?=?[]
for?m?in?range(len(node_number)):
????if?node_count[m]?==?0:
????????Ci.append(0)
????elif?node_count[m]?==?1:
????????Ci.append(0)
????else:??#?2?*?該節(jié)點(diǎn)鄰居節(jié)點(diǎn)實(shí)際連接邊數(shù)?/?最大邊數(shù)
????????Ci.append(2?*?Ei[m]?/?(node_count[m]?*?(node_count[m]?-?1)))
#?各節(jié)點(diǎn)鄰居節(jié)點(diǎn)的連通程度?計(jì)算平均聚類系數(shù)
print("天津市公交線路網(wǎng)絡(luò)平均聚類系數(shù)為:{:.4f}".format(sum(Ci)?/?len(Ci)))
plt.bar(node_number,?Ci,?color="blue")
#?添加描述信息
plt.xlabel("節(jié)點(diǎn)編號(hào)n")
plt.ylabel("節(jié)點(diǎn)的聚類系數(shù)")
plt.title("線路網(wǎng)絡(luò)中各節(jié)點(diǎn)的聚類系數(shù)分布",?fontsize=15)
plt.savefig("聚類系數(shù)分布.png")
plt.show() 結(jié)果如下:
天津市公交線路網(wǎng)絡(luò)平均聚類系數(shù)為:0.0906
