PYTHON從入門到實踐-15數據可視化

數據可視化是數據分析中不可或缺的一環,它能夠將抽象的數據轉化為直觀的圖形,幫助我們更好地理解數據特征和發現潛在規律。本文將介紹如何使用Python中的Matplotlib和Plotly庫進行數據可視化,并通過擲骰子的概率模擬案例展示可視化的實際應用。

一、Matplotlib基礎可視化

Matplotlib是Python中最基礎也是最常用的數據可視化庫之一。我們先從一個簡單的平方數可視化開始:

python

復制

下載

import matplotlib.pyplot as pltinput_values = [1, 2, 3, 4, 5, 6, 7, 8]
squares = [1, 4, 9, 16, 25, 36, 49, 64]plt.style.use('dark_background')  # 使用暗色背景主題
fig, ax = plt.subplots()
ax.plot(input_values, squares, linewidth=3)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_title('Average square number')
ax.tick_params(axis='both', which='major', labelsize=14)
plt.show()

這段代碼展示了如何創建一個簡單的折線圖,并設置了圖表標題、坐標軸標簽等基本元素。Matplotlib提供了多種內置樣式,通過plt.style.available可以查看所有可用的樣式。

二、Plotly交互式可視化

Plotly是一個強大的交互式可視化庫,特別適合創建復雜的統計圖表。下面我們使用Plotly來模擬擲骰子的概率分布。

1. 單骰子模擬

python

復制

下載

import random
import plotly.graph_objects as go
from plotly.subplots import make_subplotsdef roll_dice(num_rolls, dice_sides=6):return [random.randint(1, dice_sides) for _ in range(num_rolls)]def analyze_results(results, dice_sides=6):counts = {i: 0 for i in range(1, dice_sides + 1)}for result in results:counts[result] += 1frequencies = {k: v / len(results) for k, v in counts.items()}return counts, frequenciesdef simulate_dice_rolls(num_rolls=1000, dice_sides=6):results = roll_dice(num_rolls, dice_sides)counts, frequencies = analyze_results(results, dice_sides)fig = make_subplots(rows=1, cols=2, subplot_titles=('出現次數', '出現頻率'))fig.add_trace(go.Bar(x=list(counts.keys()), y=list(counts.values()),name='出現次數', marker_color='skyblue'),row=1, col=1)fig.add_trace(go.Bar(x=list(frequencies.keys()), y=list(frequencies.values()),name='出現頻率', marker_color='lightgreen'),row=1, col=2)fig.update_layout(title=f'模擬擲{dice_sides}面骰子 {num_rolls}次的結果',showlegend=False,xaxis_title='骰子點數',yaxis_title='出現次數',xaxis2_title='骰子點數',yaxis2_title='出現頻率',template='plotly_white')fig.show()simulate_dice_rolls(num_rolls=1000, dice_sides=6)

這段代碼模擬了1000次擲骰子的結果,并同時展示了每個點數出現的次數和頻率。通過子圖的方式,我們可以直觀地比較絕對數量和相對頻率。

2. 雙骰子模擬

python

復制

下載

def roll_dice(num_rolls):results = []for _ in range(num_rolls):die1 = random.randint(1, 6)die2 = random.randint(1, 6)total = die1 + die2results.append((die1, die2, total))return resultsnum_rolls = 1000
results = roll_dice(num_rolls)
totals = [result[2] for result in results]sum_counts = {i: 0 for i in range(2, 13)}
for total in totals:sum_counts[total] += 1fig = make_subplots(rows=1, cols=2, subplot_titles=('骰子和分布', '單個骰子點數分布'))fig.add_trace(go.Bar(x=list(sum_counts.keys()), y=list(sum_counts.values()),name='骰子和', marker_color='skyblue'),row=1, col=1
)die1_results = [result[0] for result in results]
die2_results = [result[1] for result in results]
all_die_results = die1_results + die2_resultsdie_counts = {i: all_die_results.count(i) for i in range(1, 7)}fig.add_trace(go.Bar(x=list(die_counts.keys()), y=list(die_counts.values()),name='單個骰子點數', marker_color='lightgreen'),row=1, col=2
)fig.update_layout(title_text=f'模擬擲兩個骰子 {num_rolls} 次的結果',showlegend=False,xaxis_title='骰子和',yaxis_title='出現次數',xaxis2_title='骰子點數',yaxis2_title='出現次數'
)fig.show()

雙骰子模擬展示了兩個骰子點數之和的分布以及單個骰子的點數分布。從結果中我們可以觀察到骰子和的分布呈現出對稱的鐘形曲線,而單個骰子的點數則保持均勻分布。

三、可視化技巧與最佳實踐

  1. 選擇合適的圖表類型:根據數據類型選擇合適的圖表,如折線圖適合展示趨勢,柱狀圖適合比較分類數據。

  2. 合理使用顏色:使用對比明顯的顏色突出重要數據,但避免使用過多顏色造成視覺混亂。

  3. 添加適當的標簽和標題:確保圖表有清晰的標題、坐標軸標簽和圖例。

  4. 考慮交互性:在需要詳細探索數據時,使用Plotly等支持交互的庫。

  5. 保持簡潔:避免過度裝飾,保持圖表簡潔易讀。

四、總結

本文通過實際代碼示例展示了如何使用Python進行數據可視化。從基礎的Matplotlib圖表到復雜的概率模擬可視化,我們可以看到數據可視化在理解數據和發現規律中的重要作用。無論是簡單的數據分析還是復雜的概率模擬,恰當的可視化都能幫助我們獲得更深入的洞察。

在實際應用中,可以根據需求選擇合適的可視化工具和圖表類型,并遵循可視化最佳實踐,創建出既美觀又富有信息量的圖表。

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

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

相關文章

Spring IOC 容器 **默認注冊 Bean** 的 8 條規則

Spring IOC 容器 默認注冊 Bean 的 8 條規則 (Spring Framework 6.x 源碼級總結)閱讀提示:把下面 8 條規則背下來,再讀 Spring 源碼時,你會在任何一行代碼里立刻知道「這個 BeanDefinition 是從哪兒來的」。1?? 環境…

29.【.NET8 實戰--孢子記賬--從單體到微服務--轉向微服務】--單體轉微服務--用戶配置服務

用戶配置服務是孢子記賬中最簡單的部分。簡單說,用戶配置服務就是用戶自定義的配置項存儲服務,用于我們的APP根據用戶的配置實現指定的功能。它提供了一個簡單的接口,允許用戶存儲和檢索他們的配置數據。就目前來說,用戶配置只有一…

Python實現PDF按頁分割:靈活拆分文檔的技術指南

Python實現PDF按頁分割:靈活拆分文檔的技術指南 PDF文件處理是日常工作中的常見需求,特別是當我們需要將大型PDF文檔拆分為多個部分時。本文將介紹如何使用Python創建一個靈活的PDF分割工具,能夠根據用戶指定的頁數范圍任意分割文檔。 需求分…

「iOS」——GCD其他方法詳解

GCD學習GCD其他方法dispatch_semaphore (信號量)**什么是信號量**dispatch_semaphore主要作用dispatch_semaphore主要作用異步轉同步設置一個最大開辟的線程數加鎖機制dispatch_time_t 兩種形式GCD一次性代碼(只執行一次)dispatch_barrier_async/sync柵欄…

【圖像處理基石】如何實現一個車輛檢測算法?

基于AI的車牌檢測和識別算法 問題描述、應用場景與難點 問題描述 車牌檢測和識別是計算機視覺領域的一個特定任務,主要包含兩個核心步驟: 車牌檢測:從圖像中準確定位車牌的位置和區域車牌識別:對檢測到的車牌區域進行字符識別&…

計算機學報 2025年 區塊鏈論文 錄用匯總 附pdf下載

計算機學報 Year:2025 2024請看 1 Title: 基于區塊鏈的動態多云多副本數據完整性審計方法研究 Authors: Key words: 區塊鏈;云存儲;多云多副本存儲;數據完整性審計 Abstract: 隨著云計算技術的快速發展和云存儲服務的日益…

計算機網絡-UDP協議

UDP(用戶數據報協議)是傳輸層的一種無連接、不可靠、輕量級的協議,適用于對實時性要求高、能容忍少量數據丟失的場景(如視頻流、DNS查詢等)。以下是UDP的詳細解析:1. UDP的核心特點特性說明無連接通信前無需…

子域名收集和c段查詢

子域名收集方法一、sitesite: 要查詢的域名可以查到相關網站二、oneforall (子域名查找工具)下載后解壓的文件夾在當前文件夾打開終端然后運行命令 python oneforall.py --target xxxxxxxx(這里放你要查的網址) run最…

計網-TCP擁塞控制

TCP的擁塞控制(Congestion Control)是核心機制之一,用于動態調整發送方的數據傳輸速率,避免網絡因過載而出現性能急劇下降(如丟包、延遲激增)。其核心思想是探測網絡可用帶寬,并在擁塞發生時主動…

依賴倒置原則 Dependency Inversion Principle - DIP

基本知識 1.依賴倒置原則(DIP)是面向對象設計(OOD)中的五個基本原則之一,通常被稱為 SOLID 原則中的 D 2.核心思想: 高層模塊不應該依賴低層模塊,兩者都應該依賴抽象。 (High-level modules sho…

原生input添加刪除圖標類似vue里面移入顯示刪除[jquery]

<input type"text" id"servicer-search" class"form-control" autocomplete"off" />上面是剛開始的input <div class"servicer-search-box"><input type"text" id"servicer-search" cla…

整理分享 | Photoshop 2025 (v26.5) 安裝記錄

導語&#xff1a; 最近整理資源時&#xff0c;發現有朋友在找新版 Photoshop。正好手邊有 Photoshop 2025年7月的版本&#xff08;v26.5&#xff09;&#xff0c;就記錄下來分享給大家&#xff0c;供有需要的朋友參考。關于這個版本&#xff1a;這個 Photoshop v26.5 安裝包&am…

【Redis】Redis 數據存儲原理和結構

一、Redis 存儲結構 1.1 KV結構 Redis 本質上是一個 Key-Value&#xff08;鍵值對&#xff0c;KV&#xff09;數據庫&#xff0c;在它豐富多樣的數據結構底層&#xff0c;都基于一種統一的鍵值對存儲結構來進行數據的管理和操作 Redis 使用一個全局的哈希表來管理所有的鍵值對…

【RAG優化】深度剖析OCR錯誤,從根源修復RAG應用的識別問題

1. 引言:OCR——RAG系統中的關鍵問題 當我們將一個包含掃描頁面的PDF或一張報告截圖扔給RAG系統時,我們期望它能“讀懂”里面的內容。這個“讀懂”的第一步,就是OCR。然而,OCR過程并非100%準確,它受到圖像質量、文字布局、字體、語言等多種因素的影響。 一個看似微不足道…

【第六節】方法與事件處理器

方法與事件處理器 方法處理器 可以用 v-on 指令監聽 DOM 事件: <div id="example"> <button v-on:click="greet">Greet</button></div>綁定一個單擊事件處理器到一個方法 greet 。下面在 Vue 實例中定義這個方法 var vm=new V…

大語言模型Claude 4簡介

Anthropic公司成立于2021年&#xff0c;由一群OpenAI前員工組成。他們最新發布的大語言模型(Large Language Model, LLM) Claude 4系列包括兩個版本&#xff1a;Claude Opus 4和Claude Sonnet 4&#xff1a;(1).Claude Sonnet 4&#xff1a;是Claude Sonnet 3.7的升級&#xff…

國產化PDF處理控件Spire.PDF教程:Python 將 PDF 轉換為 Markdown (含批量轉換示例)

PDF 是數字文檔管理的普遍格式&#xff0c;但其固定布局特性限制了在需要靈活編輯、更新或現代工作流集成場景下的應用。相比之下&#xff0c;Markdown&#xff08;.md&#xff09;語法輕量、易讀&#xff0c;非常適合網頁發布、文檔編寫和版本控制。 E-iceblue旗下Spire系列產…

PDF轉Markdown - Python 實現方案與代碼

PDF作為廣泛使用的文檔格式&#xff0c;轉換為輕量級標記語言Markdown后&#xff0c;可無縫集成到技術文檔、博客平臺和版本控制系統中&#xff0c;提高內容的可編輯性和可訪問性。本文將詳細介紹如何使用國產Spire.PDF for Python 庫將 PDF 文檔轉換為 Markdown 格式。 技術優…

深度解析 inaSpeechSegmenter:高效音頻語音分割與檢測開源工具

項目簡介 inaSpeechSegmenter 是法國國家視聽研究院(INA)開源的音頻分割與檢測工具,專為廣播、播客、采訪、影視等多媒體內容的自動化處理設計。它能夠高效地將長音頻自動分割為語音、音樂、噪聲、靜音等片段,并支持性別檢測(男聲/女聲),為后續的語音識別、內容檢索、轉…

VirtualBox安裝Ubuntu 22.04后終端無法打開的解決方案

問題現象在VirtualBox中使用"快速安裝"模式安裝Ubuntu 22.04后圖形終端&#xff08;gnome-terminal&#xff09;無法通過圖標或快捷鍵(CtrlAltT)啟動系統其他功能正常根本原因語言環境(Locale)配置異常導致&#xff1a;快速安裝模式可能跳過Locale生成步驟gnome-term…