Python進階第三方庫之Matplotlib

應用Matplotlib的基本功能實現圖形顯示
應用Matplotlib實現多圖顯示
應用Matplotlib實現不同畫圖種類

1、什么是Matplotlib

是專門用于開發2D圖表(包括3D圖表)
以漸進、交互式方式實現數據可視化

2、為什么要學習Matplotlib

可視化是在整個數據挖掘的關鍵輔助工具,可以清晰的理解數據,從而調整我們的分析方法。
能將數據進行可視化,更直觀的呈現
使數據更加客觀、更具說服力
例如下面兩個圖為數字展示和圖形展示:

3、實現一個簡單的Matplotlib畫圖 以折線圖為例

3.1 matplotlib.pyplot模塊

46matplotlib.pytplot包含了一系列類似于matlab的畫圖函數。
import matplotlib.pyplot as plt

3.2 圖形繪制流程:

1.創建畫布 -- plt.figure()
plt.figure(figsize=(), dpi=)
figsize:指定圖的長寬
dpi:圖像的清晰度
返回fig對象
2.繪制圖像 -- plt.plot(x, y)
以折線圖為例
3.顯示圖像 -- plt.show()

3.3 折線圖繪制與顯示

舉例:展現上海一周的天氣,比如從星期一到星期日的天氣溫度如下
import matplotlib.pyplot as plt
# 1.創建畫布
plt.figure(figsize=(10, 10), dpi=100)
# 2.繪制折線圖
plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])
# 3.顯示圖像
plt.show()

4、基礎繪圖功能 以折線圖為例

準備數據并畫出初始折線圖

import matplotlib.pyplot as plt
import random
# 畫出溫度變化圖
# 0.準備x, y坐標的數據
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
# 1.創建畫布
plt.figure(figsize=(20, 8), dpi=80)
# 2.繪制折線圖
plt.plot(x, y_shanghai)
# 3.顯示圖像
plt.show()
添加自定義x,y刻度
plt.xticks(x, **kwargs)
x:要顯示的刻度值
plt.yticks(y, **kwargs)
y:要顯示的刻度值
# 增加以下兩行代碼
# 構造x軸刻度標簽
x_ticks_label = ["11{}".format(i) for i in x]
# 構造y軸刻度
y_ticks = range(40)
# 修改x,y軸坐標的刻度顯示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
中文顯示問題解決
解決方案一:
下載中文字體(黑體,看準系統版本)
步驟一:下載 SimHei 字體(或者其他的支持中文顯示的字體也行)
步驟二:安裝字體
linux下:拷貝字體到 usr/share/fonts 下:
sudo cp ~/SimHei.ttf /usr/share/fonts/SimHei.ttf
windowsmac下:雙擊安裝
步驟三:刪除~/.matplotlib中的緩存文件
cd ~/.matplotlib
rm -r *
步驟四:修改配置文件matplotlibrc
vi ~/.matplotlib/matplotlibrc
將文件內容修改為:
font.family : sans-serif
font.sans-serif : SimHei
axes.unicode_minus : False
解決方案二:
Python腳本中動態設置matplotlibrc,這樣也可以避免由于更改配置文件而造成的麻煩,具體代碼如下:
from pylab import mpl
# 設置顯示中文字體
mpl.rcParams["font.sans-serif"] = ["SimHei"]
有時候,字體更改后,會導致坐標軸中的部分字符無法正常顯示,此時需要更改axes.unicode_minus參數:
# 設置正常顯示符號
mpl.rcParams["axes.unicode_minus"] = False
?添加網格顯示
為了更加清楚地觀察圖形對應的值
plt.grid(True, linestyle='--', alpha=0.5)
添加描述信息
添加x軸、y軸描述信息及標題
通過fontsize參數可以修改圖像中字體的大小
plt.xlabel("時間")
plt.ylabel("溫度")
plt.title("中午110分到12點之間的溫度變化圖示", fontsize=20)
圖像保存
# 保存圖片到指定路徑
plt.savefig("test.png")
注意:plt.show()會釋放figure資源,如果在顯示圖像之后保存圖片將只能保存空圖片。
完整代碼:
import matplotlib.pyplot as plt
import random
from pylab import mpl
# 設置顯示中文字體
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 設置正常顯示符號
mpl.rcParams["axes.unicode_minus"] = False
# 0.準備數據
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
# 1.創建畫布
plt.figure(figsize=(20, 8), dpi=100)
# 2.繪制圖像
plt.plot(x, y_shanghai)
# 2.1 添加x,y軸刻度
# 構造x,y軸刻度標簽
x_ticks_label = ["11{}".format(i) for i in x]
y_ticks = range(40)
# 刻度顯示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 2.2 添加網格顯示
plt.grid(True, linestyle="--", alpha=0.5)
# 2.3 添加描述信息
plt.xlabel("時間")
plt.ylabel("溫度")
plt.title("中午11--12點某城市溫度變化圖", fontsize=20)
# 2.4 圖像保存
plt.savefig("./test.png")
# 3.圖像顯示
plt.show()

5、在一個坐標系中繪制多個圖像

多次plot
需求:再添加一個城市的溫度變化
收集到北京當天溫度變化情況,溫度在1度到3度。怎么去添加另一個在同一坐標系當中的不同圖形,其實很簡單只需要再次plot即可,但是需
要區分線條,如下顯示。
# 增加北京的溫度數據
y_beijing = [random.uniform(1, 3) for i in x]
# 繪制折線圖
plt.plot(x, y_shanghai)
# 使用多次plot可以畫多個折線
plt.plot(x, y_beijing, color='r', linestyle='--')
顯示圖例
注意:如果只在plt.plot()中設置label還不能最終顯示出圖例,還需要通過plt.legend()將圖例顯示出來。
# 繪制折線圖
plt.plot(x, y_shanghai, label="上海")
# 使用多次plot可以畫多個折線
plt.plot(x, y_beijing, color='r', linestyle='--', label="北京")
# 顯示圖例
plt.legend(loc="best")
完整代碼:
# 0.準備數據
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]
# 1.創建畫布
plt.figure(figsize=(20, 8), dpi=100)
# 2.繪制圖像
plt.plot(x, y_shanghai, label="上海")
plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
# 2.1 添加x,y軸刻度
# 構造x,y軸刻度標簽
x_ticks_label = ["11{}".format(i) for i in x]
y_ticks = range(40)
# 刻度顯示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 2.2 添加網格顯示
plt.grid(True, linestyle="--", alpha=0.5)
# 2.3 添加描述信息
plt.xlabel("時間")
plt.ylabel("溫度")
plt.title("中午11--12點某城市溫度變化圖", fontsize=20)
# 2.4 圖像保存
plt.savefig("./test.png")
# 2.5 添加圖例
plt.legend(loc=0)
# 3.圖像顯示
plt.show()

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

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

相關文章

【深度解析】從AWS re_Invent 2025看云原生技術發展趨勢

2025 年 6 月 28 日 在科技浪潮持續翻涌的當下,云原生技術已然成為推動企業數字化轉型與創新發展的關鍵力量。而 AWS re:Invent 作為云計算領域一年一度的盛會,向來是展示前沿技術、洞察行業趨勢的重要舞臺。在今年的 AWS re:Invent 2025 大會上&#xf…

高亮標題里的某個關鍵字正則表達式

使用v-html渲染&#xff0c;寫一個高亮方法<span class"title-name" v-html"highlightKeywords(name, keywords)"></span>這里傳入的name帶了文件拓展名&#xff0c;所以先把名稱從文件名里提取出來// 高亮標題顏色highlightKeywords(name, ke…

視頻編解碼中colorspace,color_range,color_trc,color_primaries,是做什么用的,是誰來指定的

在視頻編解碼中&#xff0c;colorspace&#xff08;色彩空間&#xff09;、color_range&#xff08;色域范圍&#xff09;、color_trc&#xff08;傳輸特性&#xff09;、color_primaries&#xff08;原色&#xff09;是一組色彩相關元數據&#xff0c;它們共同決定了視頻的顏色…

【QT】 Qt背景介紹與概述

文章目錄&#x1f4dd;Qt背景介紹&#x1f320; 什么是Qt&#x1f309;Qt的發展史&#x1f320; Qt?持的平臺&#x1f309; Qt版本&#x1f309; Qt的優點&#x1f309; Qt的應?場景&#x1f320; Qt的成功案例&#x1f320; Qt的發展前景及就業分析&#x1f6a9;總結&#x…

如何將擁有的域名自定義鏈接到我的世界服務器(Minecraft服務器)

關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…

2025暑期—07深度學習應用-總結

人有自動選取卷積核的能力&#xff0c;傳統的圖像處理不能自動選取卷積核非線性作用函數&#xff0c;Sigmoid由于梯度消失使用Relu。卷積神經網絡的卷積核是未知的&#xff0c;自適應的。其中的權重是不斷變化的&#xff0c;就是卷積核是不斷變化的。卷積模糊了&#xff0c;池化…

數據結構-4(常用排序算法、二分查找)

一、思維導圖二、冒泡排序def bubble_sort(ls):"""用i循環,逐步比較相鄰元素,直到循環結束,停止交換&#xff0c;就像一個個氣泡從下往上冒泡,每一次的循環結果都是最大的元素到了后面已排序序列的列首。"""j 0 # 用于確定循環次數,同時用于下…

策略模式(Strategy Pattern)+ 模板方法模式(Template Method Pattern)的組合使用

using Microsoft.Extensions.DependencyInjection;namespace ConsoleApp9 {internal class Program{static async Task Main(string[] args){Console.WriteLine("Hello, World!");// 創建并配置依賴注入容器var _serviceProvider new ServiceCollection().AddScoped…

es0102---語法格式、數據類型、整合springboot、創建庫、創建映射、新增數據、自定義查詢

ES 一、創建映射字段的語法格式 需要先構建索引庫&#xff0c;在構建索引庫中的映射關系 PUT /索引庫名/_mapping {"properties": {"字段名": {"type": "類型","index": true&#xff0c;"store": false&#…

spring boot h2數據庫無法鏈接問題

spring boot h2數據庫無法鏈接問題datasource:# 數據庫連接地址&#xff1a;H2在2.x后&#xff0c;不再支持創建數據庫&#xff0c;需要手工創建&#xff0c;如&#xff1a;touch test.mv.db&#xff0c;# 否則會報“Database file not found”錯誤url: jdbc:h2:file:~/testdri…

pycharm配conda環境

最近在做表情包&#xff0c;畫出來的表情包大小不一&#xff0c;但是vx表情包平臺要求統一都是240*240的&#xff0c;所以用Pillow統一處理的一下。 如果你本地裝的python并且添加到path了&#xff0c;pycharm可以自動獲取到&#xff0c;但是我裝得miniconda&#xff0c;pychar…

【Elasticsearch】Elasticsearch 跨機房部署

《Elasticsearch 集群》系列&#xff0c;共包含以下文章&#xff1a; 1?? 冷熱集群架構2?? 合適的鍋炒合適的菜&#xff1a;性能與成本平衡原理公式解析3?? ILM&#xff08;Index Lifecycle Management&#xff09;策略詳解4?? Elasticsearch 跨機房部署5?? 快照與恢…

立式數控深孔鉆的工藝及光學檢測方法 —— 激光頻率梳 3D 輪廓檢測

引言立式數控深孔鉆作為深孔加工的關鍵設備&#xff0c;其工藝水平直接影響零件加工質量。深孔加工面臨排屑、散熱等挑戰&#xff0c;而光學檢測技術的發展為深孔加工精度控制提供了新途徑。激光頻率梳 3D 輪廓檢測技術與立式數控深孔鉆工藝的結合&#xff0c;實現了深孔加工與…

【YOLO系列】YOLOv4詳解:模型結構、損失函數、訓練方法及代碼實現

YOLOv4詳解&#xff1a;模型結構、損失函數、訓練方法及代碼實現 motivation YOLO系列作者Joseph Redmon與Alexey Bochkovskiy致力于解決目標檢測領域的核心矛盾&#xff1a;精度與速度的平衡。YOLOv4的誕生源于兩大需求&#xff1a; 工業落地&#xff1a;在移動端/邊緣設備…

chromedriver下載與安裝方法

chromedriver下載地址&#xff1a; 版本在&#xff1a;http://chromedriver.storage.googleapis.com/index.html 這是下載后&#xff1a; 把exe文件復制到瀏覽器的安裝目錄下 把exe文件復制到python的安裝目錄下 配置環境變量:此電腦→右擊屬性→高級系統設置→環境變量→用戶…

基于QT(C++)實現(圖形界面)選課管理系統

選課管理系統1 概述1.1 課程設計目的和意義根據課程大綱設定&#xff0c;面向對象課程設計的目的是&#xff1a;&#xff08;1&#xff09;理解面向對象的基本思想和三大機制&#xff0c;掌握基于 C 語法的面向對象的基 本概念和開發模式&#xff0c;熟練運用面向對象思維模式…

【阿里云-ACP-1】疑難題解析

1.彈性伸縮 AS 在企業中有廣泛的應用場景,不僅適合業務量不斷波動的應用程序,同時也適合業務量穩定的應用程序。以下關于彈性伸縮的使用說法正確的是( ) 選項內容 A 彈性伸縮可以用于云數據庫 RDS 的自動擴容 B 彈性伸縮支持自動將 ECS 實例或 ECI 實例添加到 Memcache 實…

NLP:seqtoseq英譯法案例

本文目錄&#xff1a;一、案例概述二、數據集三、案例步驟&#xff08;一&#xff09;導入工具包和工具函數&#xff08;二&#xff09;數據預處理&#xff08;三&#xff09;構建數據源對象&#xff08;四&#xff09;構建數據迭代器&#xff08;五&#xff09;構建基于GRU的編…

docker的準備與部署

docker的重復使用bilibli 黑馬視頻 方便查看docker容器。設置格式通過官網dock查看格式命令 命令別名&#xff0c;簡化輸入

Java 大視界 -- Java 大數據在智能教育自適應學習路徑規劃與學習效果強化中的應用(362)

Java 大視界 -- Java 大數據在智能教育自適應學習路徑規劃與學習效果強化中的應用(362) 引言: 正文: 一、Java 構建的智能教育數據架構 1.1 多維度學習數據實時采集 1.2 知識圖譜構建與知識點關聯 二、Java 驅動的自適應學習路徑規劃 2.1 多模型融合的路徑生成 2.2 學習效果…