時間數據的可視化

目錄

【實驗目的】

【實驗原理】

【實驗環境】

【實驗步驟】

【實驗總結】


【實驗目的】

  1. 掌握時間數據在大數據中的應用

  2. 掌握時間數據可視化圖表表示

  3. 利用Python程序實現堆疊柱形圖可視化

【實驗原理】

????????時間是一個非常重要的維度與屬性。時間序列數據存在于社會的各個領域, 如:天文觀測數據、氣象圖像、臨床診斷記錄等。診斷記錄包括病人的每次看病的 病情記錄以及心電圖等掃描儀器的數據記錄等。金融和商業交易記錄如股市每天的 交易價格及交易量、超市中每種商品的銷售情況等。不管是延續性還是暫時性的時 間數據,可視化的最終的目的就是從中發現趨勢。時間型數據包含時間屬性,不僅 要表達數據隨時間變化的規律,還需表達數據分布的時間規律。它可以分為連續性 和離散型時間數據。

????????這里就講述下離散型數據的堆疊柱形圖,堆疊柱形圖的幾何形狀和常規柱形圖 很相似,在柱形圖中,數據值為并行排列,而在堆疊柱圖則是一個個疊加起來的。 它的特點就是如果數據存在子分類,并且這些子分類相加有意義的話,此時就可以 使用堆疊柱形圖來表示。本次實驗結合本章講述的堆疊柱形圖的列子,這里我們要 畫的是極坐標系-堆疊柱狀圖,也是南丁格爾玫瑰圖。由于半徑和面積的關系是平方 的關系,南丁格爾玫瑰圖會將數據的比例大小夸大,尤其適合對比大小相近的數 值;由于圓形有周期的特性,所以玫瑰圖也適用于表示一個周期內的時間概念,比 如星期、月份。下面就用Python程序來實現。

【實驗環境】

????????OS:Windows 12th Gen Intel(R) Core(TM) i7-12700H ? 2.30 GHz

????????Python:v3.8

【實驗步驟】

1.下載數據源(http://datasets.flowingdata.com/hot-dog-places.csv )歷年熱狗大胃王比賽的前三名的成績。

hot-dog-places.c sv 里面的數據格式如下:

把hot-dog-places.csv文件保存在自己的目錄里面。比如(D:/test/)

2. 打開終端,安裝Python所需要的第三方的包,輸入

pip install pyecharts

3. 打開pycharm,新建文件,開始編寫程序實現極坐標的堆疊柱形圖。

from pyecharts import options as opts
from pyecharts.charts import Polar, Page
import csv# 1. 數據讀取(處理浮點數值)
filename = "D:\\數據可視化\\hot-dog-places.csv"
datax = []
with open(filename) as f:reader = csv.reader(f)for row in reader:datax.append(row)radius = datax[0]  # 半徑軸標簽(時間)
# 關鍵修改:使用 float() 轉換后再轉 int 避免 ValueError [1,3](@ref)
y1 = [int(float(i)) for i in datax[1]]  # 截斷小數處理
y2 = [round(float(i)) for i in datax[2]]  # 四舍五入處理
y3 = [int(float(i)) for i in datax[3]]# 2. 半徑表示時間的堆疊圖(保持原設計)
c = (Polar().add_schema(radiusaxis_opts=opts.RadiusAxisOpts(data=radius, type_="category"),angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True)).add("A", y1, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(color="#FF6347"))  # 設置顏色為番茄紅.add("B", y2, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(color="#4682B4"))  # 設置顏色為鋼青.add("C", y3, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(color="#32CD32"))  # 設置顏色為酸橙綠.set_global_opts(title_opts=opts.TitleOpts(title="半徑表示時間"),# 添加數據標簽顯示[5](@ref)tooltip_opts=opts.TooltipOpts(trigger="axis"))
)# 3. 圓邊表示時間的堆疊圖(優化樣式)
d = (Polar().add_schema(angleaxis_opts=opts.AngleAxisOpts(data=radius,type_="category",is_clockwise=True,# 優化標簽顯示[5](@ref)axislabel_opts=opts.LabelOpts(color="#333", font_size=12)),radiusaxis_opts=opts.RadiusAxisOpts(type_="value",# 添加網格線[7](@ref)splitline_opts=opts.SplitLineOpts(is_show=True))).add("A", y1, type_="bar", stack="stack0",# 設置顏色透明度[2](@ref)itemstyle_opts=opts.ItemStyleOpts(opacity=0.8, color="#FF6347"))  # 設置顏色為番茄紅.add("B", y2, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(opacity=0.8, color="#4682B4"))  # 設置顏色為鋼青.add("C", y3, type_="bar", stack="stack0",itemstyle_opts=opts.ItemStyleOpts(opacity=0.8, color="#32CD32"))  # 設置顏色為酸橙綠.set_global_opts(title_opts=opts.TitleOpts(title="圓邊表示時間"),# 添加圖例[7](@ref)legend_opts=opts.LegendOpts(pos_left="right"))
)# 4. 合并圖表(優化布局)
page = Page(layout=Page.SimplePageLayout)
page.add(c, d)
# 設置頁面尺寸[3](@ref)
page.render_options = {"width": "1600px", "height": "800px"}
page.render("render.html")

????????最后呈現的圖形如下: (這里我們畫了兩種極坐標的堆疊柱形圖,一個是半徑表示時間,一個是圓邊 表示時間。并把兩張圖顯示在一個render.html里面)

4.對于該數據集,換一種合適的圖表方式展示(例如雷達圖),并寫出相關代碼。

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Radar# 加載數據
data = pd.read_csv('hot-dog-places.csv')# 提取年份和數據
years = data.columns.tolist()
values1 = data.iloc[0].tolist()
values2 = data.iloc[1].tolist()
values3 = data.iloc[2].tolist()# 配置雷達圖的指標
c_schema = [{"name": year, "max": max(values1[i], values2[i], values3[i]) + 10} for i, year in enumerate(years)]# 創建雷達圖
radar = (Radar().add_schema(schema=c_schema).add("數據系列1", [values1], color="#f9713c").add("數據系列2", [values2], color="#b3e4a1").add("數據系列3", [values3], color="#d14a61").set_global_opts(title_opts=opts.TitleOpts(title="歷年熱狗大胃王比賽的前三名的成績的雷達圖"),legend_opts=opts.LegendOpts(is_show=True),toolbox_opts=opts.ToolboxOpts(is_show=True))
)# 渲染圖表
radar.render("hot_dog_places.html")

運行結果如下所示:

【實驗總結】

????????本次實驗通過Python實現堆疊柱形圖與雷達圖的繪制,可以掌握時間數據處理與可視化方法。實驗借助歷年熱狗大胃王比賽成績數據集,將時間數據作為關鍵維度進行分析,通過繪制堆疊柱形圖和雷達圖,直觀展示了比賽成績隨時間的變化趨勢,并且成功運用Python的pyecharts庫實現了極坐標系下的堆疊柱形圖可視化,達成了實驗目標。實驗中使用Page類將兩個堆疊柱形圖整合到一個HTML文件中,方便對比和展示。

????????實驗成功繪制出極坐標系下的堆疊柱形圖,直觀展示了歷年熱狗大胃王比賽前三名成績的變化趨勢。半徑表示時間的圖表突出了不同年份成績的對比,圓邊表示時間的圖表則更清晰地展示了各名次成績在時間周期內的分布。通過雷達圖,清晰地呈現了歷年熱狗大胃王比賽前三名成績的綜合情況,方便對不同年份和名次的成績進行多維度對比。 本次實驗僅針對特定數據集進行了可視化分析。在未來的研究中,可以嘗試將實驗方法應用于其他類型的時間序列數據,拓展實驗的應用范圍。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75465.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux紅帽:RHCSA認證知識講解(十)使用 tar創建歸檔和壓縮文件

Linux紅帽:RHCSA認證知識講解(十)使用 tar創建歸檔和壓縮文件 前言一、歸檔與壓縮的基本概念1.1 歸檔與壓縮的區別 二、使用tar創建歸檔文件2.1 tar命令格式2.2 示例操作 三、使用tar進行壓縮3.2 命令格式3.3 示例操作 前言 在紅帽 Linux 系…

制造業數字化轉型:智能招聘系統破解藍領用工匹配難題?

近年來,中國制造業面臨一個看似矛盾的現象:一邊是“用工荒”頻發,工廠招不到足夠的技術工人;另一邊是藍領求職者抱怨“找工作難”,崗位信息不對稱、匹配效率低下。據《數智化平臺推動高質量充分就業報告2024》統計&…

解決網絡異常 repo sync 中斷下載的問題

在使用repo sync下載代碼的時候,經常由于網絡不穩定等因素導致下載失敗,采用循環不斷下載的方法,腳步如下: vim ~/bin/repo_sync #!/bin/bash trap echo "ctrlc force exit"; exit SIGINT ALL_PKGgrep project .repo/m…

《MyBatis CRUD實戰與核心配置詳解:從基礎操作到高級應用》

一、使用MyBatis完成CRUD 準備工作 創建module(Maven的普通Java模塊):mybatis-002-crud pom.xml 打包方式jar 依賴: mybatis依賴 mysql驅動依賴 junit依賴 logback依賴 mybatis-config.xml放在類的根路徑下 CarMapper.xm…

Java語言如何用AI實現文件報告的自動質檢?

文件報告的質量直接影響工作效率和決策的準確性,然而,傳統的文件質檢方式往往依賴人工審核,效率低下且容易出錯。那么,如何利用AI技術實現文件報告的自動化質檢呢? 問題1:質檢的目標是什么? 文…

es自定義ik分詞器中文詞庫實現熱更新

基于web地址的方式實現ik分詞熱更新。 操作系統:win 11 es version:8.6.2 ik version:8.6.2 1、創建web服務,并提供ik查詢詞庫接口 編寫分詞http url代碼,返回自定義分詞內容分詞詞庫數據來自業務需求,存…

鉑卡梭 智能羽翼 AI 系統:交易科技的未來引擎

突破性的 AI 交易系統 鉑卡梭(Pegasus)近期推出的 InnoFeather AI System(智能羽翼 AI 系統) 代表了金融科技領域的前沿突破。這一系統集成了先進的 機器學習算法、大數據分析 和 實時市場情緒感知,旨在幫助交易者在復雜多變的市場環境中做出更精準的決策。 智能羽翼 AI 系統的…

js中判斷對象是否包含某個屬性(元素)

在JavaScript中,判斷對象是否包含某個屬性(元素)主要有以下幾種方法,根據具體需求選擇合適的方式: 1. 使用 in 運算符 作用:檢查對象自身及原型鏈上是否存在指定屬性。 示例: javascript cons…

Anaconda和Pycharm的區別,以及如何選擇兩者

目錄 主要區別詳細說明如何選擇?Anaconda的使用步驟 主要區別 Anaconda 和 PyCharm 是 Python 開發中常用的兩個工具,但它們的定位和功能完全不同。以下是它們的主要區別: 對比項AnacondaPyCharm類型Python 發行版 包管理工具Python 集成開…

UE小:在Unreal Engine 5中實現多層靜態網格體遮擋拾取

問題描述 當需要拾取被多層靜態網格體遮擋的對象時,若所有網格體碰撞預設為BlockAll,需要通過特殊配置實現穿透檢測。 完整實現方案 1. 創建自定義追蹤通道 進入 ?項目設置(Project Settings) > 碰撞(Collision…

wireshark抓包分析數據怎么看 wireshark使用教程_wireshark怎么看

Wireshark與Sniff Master:網絡抓包工具使用指南 網絡抓包分析是開發測試和網絡故障排查中不可或缺的技能。在眾多抓包工具中,Wireshark無疑是最流行且功能強大的選擇,而Sniff Master作為后起之秀,也因其簡潔高效的特點受到許多專…

密碼學基礎——古典密碼學

目錄 一、定義 特點: 二、發展階段 三、代換密碼 1.單表代換密碼 1.1愷撒密碼 1.2 移位變換 1.3 仿射變換 2.多表代換密碼 維吉尼亞密碼 四、置換密碼 柵欄密碼 一、定義 古典密碼學是指在現代密碼學出現之前,使用較為簡單的數學方法和手工…

【案例分享】江蘇某汽車制造廠水冷式制冷站AI節能優化方案

主要訴求: 對B系統進行AI節能優化:3臺離心機1臺螺桿機板式換熱器 優化前后對比: ? 優化前:根據人工經驗判斷冷機和板換的啟停,PLC固定邏輯調節參數 ?優化后:根據冷負荷對工況進行分類,自動…

vue+springboot 新增操作,前端id傳string,后端接收為long類型,報錯類型不匹配——解決方法

我在做新增功能的時候,做了一個邏輯判斷,當前端沒有傳遞對應的id值時,為新增;有id值時,為修改 問題一、:前端idundefined,和我的需求不符合,我要id為空,不傳值。最后發現…

vue前端項目技術架構(第二版)

vue技術架構介紹 如下圖所示,展示了項目系統的軟件層次架構。該系統采用基于SOA(面向服務架構)思想的分層架構,分為四個主要層次:視圖層、編譯層、代碼層和數據層。 視圖層 瀏覽器:核心職責是解析并展示…

在服務器里面磁盤分區很簡單嗎?

不管是我們的普通辦公電腦還是服務器都是需要硬盤的,硬盤的類型分機械硬盤(HDD)和固態硬盤(SSD),這兩種磁盤是我們平常最常見的硬盤您他們又有什么區別 機械硬盤(HDD) 原理&#xff…

Pycharm(十一):字符串練習題

1.輸入一個字符串,打印所有偶數位上的字符(下標是0,2,4,6...位上的字符) # 練習題1:輸入一個字符串,打印所有偶數位上的字符(下標是0,2,4,6...位上的字符) # 1.鍵盤錄入字符串&…

虛幻5入門

常用操作 運行時,調試相機,按~鍵,輸入ToggleDebugCamera 。進入自由視角 常用節點 gate節點:用于控制該流程通不通,執不執行。Flip Flop節點:反轉執行,一次A,一次B。Set Timer by…

Prompt Flow 與 DSPy:大型語言模型開發的未來

作為一名大模型算法工程師,我一直在探索如何更高效地開發和優化基于大型語言模型(LLM)的應用程序。隨著模型規模的不斷擴大和應用場景的日益復雜,傳統的開發方式已經難以滿足高效、靈活和可擴展的需求。幸運的是,Promp…

Prompt攻擊是什么

什么是Prompt攻擊 Prompt攻擊(Prompt Injection/Attack) 是指通過精心構造的輸入提示(Prompt),誘導大語言模型(LLM)突破預設安全限制、泄露敏感信息或執行惡意操作的攻擊行為。其本質是利用模型對自然語言的理解漏洞,通過語義欺騙繞過防護機制。 Prompt攻擊的精髓:學…