Python可視化 | 使用matplotlib繪制面積圖示例

面積圖是數據可視化中的一個有效工具,用于說明時間上的關系和趨勢。它們提供了一種全面的、視覺上迷人的方法,通過熟練地將折線圖的可讀性與填充區域的吸引力相結合來呈現數值數據。

在本文中,我們將學習更多關于在Python中創建面積折線圖的知識。面積圖為數據可視化提供了一個有價值的工具,提供了一種清晰而引人入勝的方式來傳達隨著時間的推移的趨勢和關系。

什么是面積圖?

面積線圖,也稱為面積圖或堆積面積圖,是一種數據可視化技術,用于表示隨時間或跨類別的數據。它是基本折線圖的擴展,當您想要顯示整體的組成、沿著單個組件以及它們如何隨時間或跨類別變化時,它特別有用。在本文中,我們將探索如何使用matplotlib庫在Python中創建面積線圖,并解釋它們在可視化數據中的重要性。

以下是面積線圖的關鍵組成部分和特征。

X軸:水平軸代表自變量,通常是時間或類別。它是一種連續或分類量表,為數據點提供背景。

Y軸:垂直軸表示因變量,通常是一個數值,用于度量您正在可視化的內容的數量或大小。

線:面積線圖中的各條線表示不同的類別、組或構件。每一行從基線(通常是X軸)開始,向上顯示該類別或組件在特定時間點或沿著類別軸的值。

區域填充:線條和基線之間的區域用顏色填充,使其在視覺上與眾不同。該區域的顏色通常用于表示它所代表的類別或組件。

堆疊:在堆疊面積圖中,每條線都堆疊在前一條線的頂部。這種疊加說明了總體如何隨時間或跨類別變化,以及每個類別對整體的貢獻。

創建面積圖

首先,讓我們使用Python制作一個基本的面積線圖。為了創建圖并顯示各種類別如何隨時間變化,我們將使用Matplotlib。

import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'y': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10]
})# Create the area line plot
plt.fill_between(df['x'], df['y'], color='blue', alpha=0.2)
plt.plot(df['x'], df['y'], color='red', alpha=0.5, linewidth=0.9)plt.title("Area Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

在這里插入圖片描述

帶標記和標簽的面積圖

添加更多功能,使其更具吸引力

  • 導入必要的庫:pandas用于數據操作,matplotlib.pyplot用于數據可視化。
  • 準備示例數據:創建一個DataFrame,其中’x’和’y’列包含數值。
  • 生成面積線圖:使用plt.fill_between()創建半透明的藍色面積線圖,使用plt.plot()創建微弱的紅色線。
  • 使用標記和標簽增強圖:使用plt.scatter()在數據點處添加紅色圓形標記(s=30)。使用plt.text()在每個數據點上方添加黑色標簽,將其水平居中(ha =‘center’)并在底部垂直對齊(va =‘bottom’)。自定義軸、添加標題并顯示繪圖。
import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'y': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10]
})# Create the area line plot
plt.fill_between(df['x'], df['y'], color='blue', alpha=0.5)
plt.plot(df['x'], df['y'], color='red', alpha=0.1)# Add red markers at data points
plt.scatter(df['x'], df['y'], color='red', s=30)# Add labels above data points
for i, row in df.iterrows():plt.text(row['x'], row['y'], str(row['y']), ha='center', va='bottom', color='black', size=10)plt.title("Area Line Plot with Markers and Labels")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

在這里插入圖片描述

堆疊面積圖

  • 導入必要的庫:pandas用于數據操作,matplotlib.pyplot用于數據可視化。
  • 準備示例數據:創建一個DataFrame,其中包含“x”、“Category A”、“Category B”和“Category C”列,列中包含數值。
  • 定義自定義顏色:定義要用于每個類別的顏色列表(“黃色”、“紫色”、“粉紅色”)。
  • 生成堆疊面積線圖:使用plt.stackplot()創建具有定義的顏色和透明度的堆疊面積線圖。此外,使用不同的顏色、線寬和透明度為每個類別繪制單獨的線條。添加標簽、自定義軸并顯示繪圖。
import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'Category A': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10],'Category B': [2, 4, 3, 5, 6, 8, 7, 9, 10, 11],'Category C': [3, 5, 4, 6, 7, 9, 8, 10, 11, 12]
})# Define custom colors for each category
colors = ['yellow', 'purple', 'pink']# Create the stacked area line plot with custom colors
plt.stackplot(df['x'], df['Category A'], df['Category B'], df['Category C'], colors=colors, alpha=0.7)# Plot lines for each category with custom colors
plt.plot(df['x'], df['Category A'], color='blue', alpha=0.5, linewidth=0.9)
plt.plot(df['x'], df['Category B'], color='green', alpha=0.5, linewidth=0.9)
plt.plot(df['x'], df['Category C'], color='red', alpha=0.5, linewidth=0.9)plt.title("Stacked Area Line Plot with Custom Colors")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.legend()
plt.show()

在這里插入圖片描述

線間填充

  • 導入必要的庫:matplotlib.pyplot用于數據可視化,numpy用于數值運算。
  • 準備樣本數據:使用np.linspace生成x軸值,并使用sin和cos函數計算相應的y軸值。
  • 創建繪圖元素:使用plt.subplots()創建一個圖形和軸,并使用ax.plot()繪制兩條具有不同顏色和標簽的線。
  • 線間填充:使用ax.fill_between()以特定顏色和透明度填充線條之間的區域,并應用條件和插值。添加標簽、自定義軸并顯示繪圖。
import matplotlib.pyplot as plt
import numpy as np# Sample data for demonstration
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)# Create a figure and axis
fig, ax = plt.subplots()# Plot the two lines
ax.plot(x, y1, label='Line 1', color='blue')
ax.plot(x, y2, label='Line 2', color='green')# Fill the area between the lines
ax.fill_between(x, y1, y2, where=(y1 > y2), interpolate=True, alpha=0.5, color='yellow', label='Fill Area')# Customize the plot
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_title('Filling Between Lines')
ax.legend()# Display the plot
plt.show()

在這里插入圖片描述

總結

總而言之,面積圖可有效顯示數據隨時間或跨類別的趨勢、比較和部分與整體的關系。它們提供了一種視覺上引人注目的方式來理解不同的組件如何對整體做出貢獻,以及這些貢獻如何在選定的軸(時間或類別)上發生變化。

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

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

相關文章

【python】python指南(二):命令行參數解析器ArgumentParser

一、引言 對于算法工程師來說,語言從來都不是關鍵,關鍵是快速學習以及解決問題的能力。大學的時候參加ACM/ICPC一直使用的是C語言,實習的時候做一個算法策略后臺用的是php,畢業后做策略算法開發,因為要用spark&#x…

24考研408大變化,25考研高分上岸規劃+應對策略

巧了,我有現成的經驗: 數學和專業課的成績都不高不低,剛好夠用,其實408想上岸,不僅僅要學好408,還要學好考研數學,這是我的肺腑之言,我復試的時候,我知道的那些沒有進復試…

高通SDX12:Voice Over USB 功能調試

一、功能概述及使用環境 Linux PC 作為上位機,內置 SLIC基于高通 SDX12 平臺的設備作為從設備,通過USB連接到 Linux PC 上,在 PC 上枚舉 UAC 設備從設備進行 MO/MT Call 時,上位機使用 arecord 進行錄音,音頻數據通過 USB 傳至上位機,上位機停止錄音后再使用 aplay 進行播…

vue element 接口返回數據與控制臺打印數據不一致 踩坑

問題描述: 接口返回數據正常,,控制臺打印不對,element el-switch表格中使用,控制臺打印數據被改變 如下正常數據 數據id 17狀態是0 控制臺打印狀態卻是1 造成原因: element el-seitch組件修改了狀態 修…

解決方案:昇騰aarch64服務器安裝CUDA+GCC+CMake,編譯安裝Pytorch,華為昇騰HPC服務器深度學習環境安裝全流程

目錄 一、安裝CUDA和cudnn1.1、下載CUDA驅動1.2、安裝CUDA驅動1.3、配置環境變量1.4、安裝cudnn1.5、安裝magma-cuda 二、安裝gcc編譯器三、安裝CMake四、安裝NCCL五、編譯安裝Pytorch5.1、前提準備5.2、下載pytorch源碼5.3、配置環境變量5.4、Pytorch編譯安裝5.5、測試Pytorch…

Python教程:Python操作MySQL基礎使用

8、Python操作MySQL基礎使用 8.1 安裝pymysql pip install pymysql8.2 測試連接 測試代碼 from pymysql import Connection# 獲取到MySQL數據庫的鏈接對象 conn Connection(# 主機名hostlocalhost,# 端口號,默認3306port3306,# 賬戶名userroot,# 密碼password3535 )# 打印…

日志分析集群最新版

日志分析集群-8版本 作者:行癲(盜版必究) 第一部分:Elasticsearch 一:環境準備 1.簡介 ? 部署模式:es集群采用無主模式 ? es版本:8.13.4 ? jdk版本:使用es內嵌的jdk21&#x…

GAT1399協議分析(10)--單圖像刪除

一、官方接口 由于批量刪除的接口,圖像只能單獨刪除。 二、wireshark實例 這個接口比較簡單,調用request delete即可 文本化: DELETE /VIID/Images/34078100001190001002012024060513561300065 HTTP/1.1 Host: 10.0.201.56:31400 User-Age…

【sklearn】【邏輯回歸1】

學習筆記來自: 所用的庫和版本大家參考: Python 3.7.1Scikit-learn 0.20.1 Numpy 1.15.4, Pandas 0.23.4, Matplotlib 3.0.2, SciPy 1.1.0 1 概述 1.1 名為“回歸”的分類器 在過去的四周中,我們接觸了不少帶“回歸”二字的算法&#xf…

生物神經網絡 原理分析研讀02

可能有用基礎介紹 人類交互1 大腦視覺的處理過程 人類交互2 聽覺處理和語言中樞 人類交互3 皮膚感覺與運動系統 人類交互4 感覺輸入和運動輸出 人類交互5 大腦信號編碼與解碼 相關材料分析研讀 當前為了實現人工智能的兩個主流技術是深度學習和類腦計算,深度學習…

linux防止nmap掃描

1、首先關閉Centos7自帶的firewalld [rootnode ~]# systemctl disable firewalld.service && systemctl stop firewalld.service 2、安裝iptables服務 [rootnode ~]# yum install iptables-services iptables-devel -y [rootnode ~]# systemctl enable iptables …

【Vue】練習-Vuex中的值和組件中的input雙向綁定

目標 實時輸入&#xff0c;實時更新&#xff0c;鞏固 mutations 傳參語法 實現步驟 代碼示例 App.vue <input :value"count" input"handleInput" type"text"> <script>export default {methods: {handleInput (e) {// 1. 實時獲取…

MyQL 事務隔離級別解析

隔離級別臟讀不可重復讀幻讀未提交讀可能可能可能已提交讀不可能可能可能可重復讀不可能不可能可能可串行化不可能不可能不可能 當我們談論數據庫事務的隔離級別時&#xff0c;經常會聽到“臟讀”、“不可重復讀”和“幻讀”這三個術語。下面我會盡量用通俗的語言來解釋它們&a…

分布式Shiro,SpringBoot項目Shiro整合Redis

分布式Shiro&#xff0c;SpringBoot項目Shiro整合Redis 重要 Begin 你的SpringBoot項目已經使用了Shiro&#xff0c;并且可以正常使用。本篇文章的主要目的是將Shiro保存在服務器內存中的session信息改為使用Redis保存session信息 重要 End 正文開始 0、前情概要 由于shiro…

Python通過數據驗證功能在Excel文件中創建下拉列表

Excel表格的靈活性和功能性深受各行各業人士的喜愛。在Excel表格中&#xff0c;下拉列表功能是提升數據錄入效率與準確性的一個重要利器&#xff0c;能夠為用戶提供預設的選擇項&#xff0c;限制輸入范圍&#xff0c;避免手動輸入錯誤&#xff0c;還能夠簡化數據錄入過程&#…

Rust : windows下protobuf嘗試

此前dbpystream庫是用python開發 web api。今天在rust中試用一下protobuf。 一、 protobuf編譯器下載 具體見相關文章。沒有編譯器&#xff0c;protobuf無法運行。 windows參見&#xff1a; https://blog.csdn.net/wowotuo/article/details/139458846?spm1001.2014.3001.550…

推薦系統三十六式學習筆記:原理篇.內容推薦05|從文本到用戶畫像有多遠?

目錄 從文本開始構建用戶畫像一、結構化文本1、TF-IDF2、TextRank3、內容分類&#xff1a;4、實體識別5、聚類6、詞嵌入 二、標簽選擇1、卡方檢驗2、信息增益 總結 對于一個早期的推薦系統來說&#xff0c;基于內容推薦離不開用戶構建一個初級的畫像&#xff0c;這種初級的畫像…

【數據結構】棧的應用

目錄 0 引言 1 棧在括號匹配中的應用 2 棧在表達式求值中的應用 2.1 算數表達式 2.2 中綴表達式轉后綴表達式 2.3 后綴表達式求值 3 棧在遞歸中的應用 3.1 棧在函數調用中的作用 3.2 棧在函數調用中的工作原理 4 總結 0 引言 棧&#xff08;Stack&#xff09;是一…

MySQL A表的字段值更新為B表的字段值

MySQL A表的字段值更新為B表的字段值 準備數據表 create table person (id int unsigned auto_increment comment 主鍵 primary key,uuid varchar(32) not null comment 系統唯一標識符32個長度的字符串,mobile varchar(11) null comment 中國國內手機號,nickn…

使用 Ollama 和 Open WebUI 自托管 LLM 聊天機器人(無需 GPU)

?點擊這里?&#xff1a;&#x1f680;原文鏈接&#xff1a;&#xff08;更好排版、視頻播放、社群交流、最新AI開源項目、AI工具分享都在這個公眾號&#xff01;&#xff09; 使用 Ollama 和 Open WebUI 自托管 LLM 聊天機器人&#xff08;無需 GPU&#xff09; &#x1f31…