一、概念介紹
嵴線圖(ridgeline plot),用來展示同一維度的幾個資料的分布情況,每一層嵴線(峰巒)都是一個直方圖或者密度圖,層層堆疊形成了最終的嵴線圖,
· 嵴線圖一般用于多類別(>5) 的連續變數數值分布對比,也因此,如果某一個資料的取值區間過小或者分布平均時,波動不易察覺,且影響圖形呈現的視覺美觀,
圖形示例:

我們需要了解的是:嵴線圖的橫坐標是數值分布區間,更像我們常使用的y軸;而縱坐標是每一個數值序列的類標;嵴線的波峰代表在對應值分布集中, 頻率高,
二、資料展示
在本案例中,我們希望通過嵴線圖展示隨機選擇的八座城市在過去一年的日最高溫最低溫分布情況,
資料來源于廣州11月份天氣|廣州11月份氣溫|廣州2021年11月份歷史天氣—全球天氣網
借助了爬蟲工具,我們簡便地收集了2020-12至2021-11的日度資料,得到如下excel集合

每一個excel表格的資料呈現如下:

同一版資料,對于氣候型別也繪制了馬賽克圖~
感興趣的朋友可戳https://blog.csdn.net/qq_45400322/article/details/122522620
三、資料讀入
import pandas as pd
city8_fullname_py = ['beijing','chongqing','wuhan','shenzhen','nanjing','guangzhou','chengdu','shanghai']
city8_fullname = ['北京','重慶','武漢','深圳','南京','廣州','成都','上海']
weather_dic = {}
for i in range(len(city8_fullname)):
df = pd.DataFrame(pd.read_excel('./2021年城市氣溫資料/2021年氣溫資料'+city8_fullname_py[i]+'.xls'))
weather_dic[city8_fullname[i]] = df[['日期','最高溫','最低溫','氣候型別']]
weather_dic[city8_fullname[i]]['城市'] = pd.Series([city8_fullname[i]]*df.shape[0])
weather = weather_dic[city8_fullname[0]]
for i in range(1,8):
weather = pd.concat([weather,weather_dic[city8_fullname[i]]],ignore_index="true")
得到的資料存放在weather中,結構如下:

四、影像繪制
這里我們需要joypy包
import joypy
import matplotlib.pyplot as plt
plt.figure(dpi= 90)
fig, axes = joypy.joyplot(weather, column=['最高溫', '最低溫'], by="城市", figsize=(13,9),
fill=True, legend=True,alpha=.8,
xlabelsize=18,ylabelsize=18,color=['tomato','dodgerblue']
)
plt.title('八大城市過去一年氣溫分布', fontsize=25,verticalalignment='bottom' )
plt.savefig(r'./繪圖結果/天氣-過去一年氣溫分布-嵴線圖.png')
by----在圖形中即我們的縱坐標,資料類別,需要指定,
fill----是否需要顏色填充
alpha----在面積圖和嵴線圖這類會存在影像覆寫的可視化影像中,我們是建議調整透明度的,便于同時展示被覆寫部分的輪廓,當然,如果資料本身存在面積差異,則盡量面積小的類別前置,
結果如下所示:

如果有任何疑問的話呢,歡迎評論區交流~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/413448.html
標籤:python
上一篇:【Python GUI 視窗句柄定位】——使用滑鼠指標定位視窗句柄并獲得對應的程式屬性值,針對流氓軟體綽綽有余
下一篇:Python正則運算式總結
