Python繪圖技巧,主流繪圖庫

一、主流繪圖庫概覽

1. 核心工具對比

庫名稱特點適用場景
Matplotlib基礎繪圖庫,高度可定制科學繪圖、論文圖表
Seaborn基于Matplotlib,統計圖表優化數據分布、關系可視化
Plotly交互式可視化,支持網頁輸出儀表盤、動態數據展示
Pandas內置簡易繪圖接口快速數據探索

2. 環境準備

pip install matplotlib seaborn plotly pandas


二、Matplotlib基礎與進階

1. 基礎繪圖模板

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# 設置中文字體
matplotlib.rcParams['font.family'] = 'SimHei'  # 使用黑體字體,根據實際情況修改
# 生成數據
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)# 創建畫布
plt.figure(figsize=(8, 4), dpi=100)# 繪制曲線
plt.plot(x, y, color='#FF6B6B',  # 十六進制顏色linestyle='--', linewidth=2,marker='o',markersize=5,label='sin(x)')# 添加標注
plt.title("正弦函數曲線", fontsize=14, fontfamily='SimHei')  # 解決中文顯示
plt.xlabel("X軸", fontsize=12)
plt.ylabel("Y軸", fontsize=12)
plt.legend(loc='upper right')  # 圖例位置# 網格與樣式
plt.grid(True, linestyle=':', alpha=0.7)
plt.tight_layout()  # 自動調整布局# 顯示/保存
plt.savefig('sine_curve.png', bbox_inches='tight')  # 透明背景可加參數transparent=True
plt.show()

?

2. 多子圖布局

fig, axes = plt.subplots(2, 2, figsize=(10, 8))  # 2行2列# 第一個子圖
axes[0,0].plot(x, np.sin(x), label='正弦')
axes[0,0].set_title('正弦曲線')# 第二個子圖
axes[0,1].scatter(x, np.cos(x), c='green', marker='^')
axes[0,1].set_title('余弦散點')# 第三個子圖(直方圖)
axes[1,0].hist(np.random.randn(1000), bins=30, edgecolor='black', alpha=0.7)# 第四個子圖(填充圖)
axes[1,1].fill_between(x, np.sin(x), np.cos(x), where=(np.sin(x) > np.cos(x)), color='skyblue', alpha=0.4)plt.tight_layout()

?


三、Seaborn高效統計繪圖

1. 分布可視化

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')# 聯合分布圖
sns.jointplot(x='total_bill', y='tip', data=tips, kind='hex',  # 可選 'reg'、'kde'marginal_kws={'color': '#4ECDC4'})# 分類箱線圖
plt.figure(figsize=(8,5))
sns.boxplot(x='day', y='total_bill', hue='sex', data=tips, palette='Pastel1')
plt.title('每日消費分布')

?

?

2. 熱力圖與聚類

# 相關性熱力圖
corr = tips.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', linewidths=0.5, fmt='.2f')# 聚類圖
sns.clustermap(corr, cmap='viridis', figsize=(6,6), method='ward')

?

import plotly.express as px# 散點圖矩陣
fig = px.scatter_matrix(iris, dimensions=["sepal_length", "sepal_width", "petal_length", "petal_width"],color="species")
fig.show()# 3D曲面圖
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))fig = px.surface(x=x, y=y, z=Z, color_continuous_scale='Viridis')
fig.update_layout(title='3D曲面圖')
fig.show()

?


四、Plotly交互式可視化

import plotly.graph_objects as go
import numpy as np# 生成3D數據
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))fig = go.Figure(data=[go.Surface(z=Z,colorscale='Viridis',contours={  # 添加等高線"z": {"show": True, "usecolormap": True}})
])# 添加控件按鈕
fig.update_layout(title='3D動態曲面圖',scene=dict(xaxis_title='X軸',yaxis_title='Y軸',zaxis_title='Z值',camera=dict(  # 預設視角eye=dict(x=1.5, y=1.5, z=0.1))),updatemenus=[  # 添加視角切換按鈕dict(type="buttons",buttons=[dict(label="俯視",method="relayout",args=[{"scene.camera.eye": {"x": 0, "y": 0, "z": 2.5}}]),dict(label="側視",method="relayout",args=[{"scene.camera.eye": {"x": 2, "y": 2, "z": 0.1}}])],direction="left",pad={"r": 10, "t": 10},showactive=True,x=0.1,xanchor="left",y=1.1,yanchor="top")]
)fig.show()

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

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

相關文章

網絡安全之前端學習(HTML篇)

前言:網絡安全中有一個漏洞叫xss漏洞,就是利用網頁引發彈窗,這就要求我們看得懂源碼,所以我會持續更新前端學習,可以不精通,但是一定要會,主要掌握HTML,css,js這三項技術…

Qt 多線程設計:死循環與信號槽的權衡

在開發音視頻播放器時,多線程設計是不可避免的挑戰。音頻和視頻的解碼、播放需要高效運行,同時還要與主線程或其他線程同步,例如通過信號通知播放進度。本文基于一個實際案例,分析了兩種線程設計在死循環和信號槽使用中的表現&…

knowledge-微前端(多個前端應用聚合的一個應用架構體系,每個小的應用可獨立運行,獨立開發,獨立部署上線)

1.前言 微前端,將一個大的前端應用拆分為多個小型的,獨立開發的前端應用,每一個小型的應用都可以單獨的開發,部署和運行。這種結構允許不同的團隊使用不同的技術棧來開發應用的不同部分,提高開發的效率與靈活性。 2.實…

工廠函數詳解:概念、目的與作用

一、什么是工廠函數? 工廠函數(Factory Function)是一種設計模式,其核心是通過一個函數來 創建并返回對象,而不是直接使用 new 或構造函數實例化對象。它封裝了對象的創建過程,使代碼更靈活、可維護。 二、…

旋轉位置編碼(Rotary Positional Encoding, RoPE):中文公式詳解與代碼實現

旋轉位置編碼(Rotary Positional Encoding, RoPE):中文公式詳解與代碼實現 在序列模型中,位置信息對于任務的理解至關重要。傳統的絕對和相對位置編碼各有優缺點,而RoPE作為一種創新的位置編碼方法,展現了…

C語言-指針變量和變量指針

指針 預備知識 內存地址 字節:字節是內存的容量單位,英文名Byte,1Byte8bits 地址:系統為了便于區分每一個字節面對它們的逐一進行編號(編號是唯一的),稱為內存地址,簡稱地址。int…

unityAB包(1/2)

unityAB包學習 1.AB包的導出擴展BuildAssetBundleOptions無特殊選項壓縮相關選項 2.AB包資源管理3.Resource和AssetBundle加載方式的區別4.預設體5.Unity Asset Bundle Browser 工具5為什么要勾選拷貝到StreamingAsset里面。6.AB包的加載 1.AB包的導出 首先在Project窗口&…

算法——廣度優先搜索——跨步迷宮

原題鏈接 思路:找出最短路徑,然后判斷是否存在連續三個點是橫縱坐標相等的,如果有就步數減1 但是有兩個樣例過不了 錯誤原因:在錯誤的測試案例中,最短路徑可能有多條,而我剛好選了一條比較曲折的&#x…

某酒企數字化轉型及電商規劃項目啟動會暨培訓會v(60頁PPT)(文末有下載方式)

詳細資料請看本解讀文章的最后內容。 在當今數字化浪潮席卷之下,企業的發展面臨著前所未有的機遇與挑戰。對于某酒企而言,數字化轉型和電商規劃已成為其實現 “二次騰飛”、邁向世界級酒企的關鍵戰略舉措。本次啟動會暨培訓會,為該酒企的轉型…

NET6 WebApi第5講:中間件(源碼理解,俄羅斯套娃怎么來的?);Web 服務器 (Nginx / IIS / Kestrel)、WSL、SSL/TSL

一、NET6的啟動流程 區別: .NET6 WebApi第1講:VSCode開發.NET項目、區別.NET5框架【兩個框架啟動流程詳解】_vscode webapi-CSDN博客 2、WebApplicationBuilder:是NET6引入的一個類,是建造者模式的典型應用 1>建造者模式的…

vue中根據html動態渲染內容

需求&#xff1a;根據數據中的html&#xff0c;因為我是在做填空&#xff0c;所以是需要將html中的_____替換成input&#xff0c;由于具體需求我使用的是元素contenteditable代替的可編輯的input html部分 <div class"wrap"><component :is"rendered…

【AI】AI編程助手:Cursor、Codeium、GitHub Copilot、Roo Cline、Tabnine

文章目錄 一、基本特性對比二、收費標準三、私有部署能力1、Tabnine2、Roo Code 三、代碼補全與自然語言生成代碼四、安裝獨立的IDE安裝插件安裝 五、基本使用&#xff08;一&#xff09;Cursor&#xff08;二&#xff09;GitHub Copilot1、獲取代碼建議2.聊天1&#xff09;上下…

三軸云臺之角速度信號篇

三軸云臺的角速度信號主要通過其內置的傳感器&#xff08;如陀螺儀&#xff09;來感知和測量。 一、角速度信號的感知與測量 在三軸云臺中&#xff0c;陀螺儀是測量角速度的關鍵組件。它通常安裝在三個互相垂直的軸上&#xff08;通常為X、Y、Z軸&#xff09;&#xff0c;能夠…

Grid 布局實現三欄布局

使用 CSS Grid 布局實現三欄布局(左右固定 100px,中間自適應)的核心原理是通過網格模板精確控制列寬分配。以下是具體實現方法及優化技巧: 一、基礎實現 ?父容器設置 為外層容器添加 display: grid 使其成為網格容器,并通過 grid-template-columns 定義列寬 css .contain…

綠盟春招實習一面

《網安面試指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇網安資料庫https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

進制轉換(R轉十)(1290. 二進制轉換十進制、1292. 十六進制轉十進制、1291. 八進制轉十進制、1405. 小麗找潛在的素數)

題單地址&#xff1a;題單中心-東方博宜OJ 這里以二進制轉十進制為例&#xff08;按位加權求和法&#xff09; 1290. 二進制轉換十進制 問題描述 請將一個 25 位以內的 2 進制正整數轉換為 1010 進制&#xff01; 輸入 一個 25 位以內的二進制正整數。 輸出 該數對應的…

Redis 本地安裝

首先安裝&#xff1a; https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-from-source/ 進入root目錄 tar -xzvf redis-stable.tar.gz cd redis-stable make然后 install sudo make install最后可以直接啟動 redis-server但是此時啟…

9.嗅探與Wireshark進階分析

嗅探與Wireshark進階分析 第一部分&#xff1a;嗅探的概念與重要性第二部分&#xff1a;Wireshark進階功能第三部分&#xff1a;嗅探實踐與分析總結 目標&#xff1a; ? 理解嗅探&#xff08;Sniffing&#xff09;的概念及其在網絡安全中的作用 ? 掌握Wireshark的進階功能&a…

在 VSCode 遠程開發環境下使用 Git 常用命令

在日常開發過程中&#xff0c;無論是單人項目還是團隊協作&#xff0c;Git 都是版本管理的利器。尤其是在使用 VSCode 連接遠程服務器進行代碼開發時&#xff0c;Git 不僅能幫助你管理代碼版本&#xff0c;還能讓多人協作變得更加高效。本文將介紹一些常用的 Git 命令&#xff…

npm 命令使用文檔

目錄 簡介安裝與配置基礎命令依賴管理版本控制腳本管理包發布高級命令配置管理最佳實踐常見問題 1. 簡介 npm (Node Package Manager) 是 Node.js 的官方包管理工具&#xff0c;提供&#xff1a; 130萬 開源包的注冊表訪問依賴解析與版本管理項目腳本自動化私有包管理能力完…