最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python可視化與交互matplotlib庫(kù)的詳細(xì)介紹

 更新時(shí)間:2025年09月01日 09:51:50   作者:hAnGWS  
matplotlib庫(kù)是python中繪制二維,三維圖表的數(shù)據(jù)可視化工具,在2D繪圖領(lǐng)域使用最廣,這篇文章主要介紹了Python可視化與交互matplotlib庫(kù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

matplotlib庫(kù)介紹

matplotlib庫(kù)是一個(gè)非常實(shí)用的庫(kù),與numpy、pandas庫(kù)并稱為三大頂級(jí)Python庫(kù)。它可以將matlab中的相當(dāng)一部分繪圖功能遷移到python中,同時(shí),也可以滿足一定的交互需求,非常適合可視化的需求。

繪圖基本邏輯

先上示例:

import matplotlib.pyplot as plt
import numpy as np

# 畫圖基本邏輯
## 準(zhǔn)備數(shù)據(jù)
x = np.linspace(0, 10, 100)
y = np.sin(x)

## 創(chuàng)建畫布和容器
fig, ax = plt.subplots()

## 繪制圖形
ax.plot(x, y)

# 自定義圖形
ax.set_title('Sine Wave')   # 設(shè)置標(biāo)題
ax.set_xlabel('x')          # 設(shè)置橫坐標(biāo)標(biāo)簽
ax.set_ylabel('sin(x)')     # 設(shè)置縱坐標(biāo)標(biāo)簽
ax.grid(True)               # 顯示網(wǎng)格

# 顯示圖形
plt.show()

該程序運(yùn)行出來的圖如下:

該實(shí)例中,整個(gè)繪圖流程分為了準(zhǔn)備數(shù)據(jù)、創(chuàng)建畫布、繪制圖形、圖形編輯這幾個(gè)部分。

首先第一部分,準(zhǔn)備數(shù)據(jù)。本示例中利用numpy庫(kù)創(chuàng)建了一組正弦函數(shù)數(shù)據(jù),在實(shí)際應(yīng)用中,更多的是從文件中讀取數(shù)據(jù)。

第二部分創(chuàng)建畫布,在matplotlib庫(kù)中,通常把繪制圖形分為局部整體兩個(gè)部分,這是為了滿足多圖繪制的需求。因?yàn)樵诶L制數(shù)據(jù)可視化圖形中,通常需要繪制譬如多行多列的圖形,因此該庫(kù)中將繪圖整體稱之為Figure,將每一個(gè)繪制的圖形稱之為Axes,不過需要指明,該單詞雖然意為“坐標(biāo)軸”,但是其功能更貼切于一個(gè)容器,表述每一個(gè)子圖的繪制。在本示例中,由于只進(jìn)行了單圖的繪制,因此,后續(xù)繪制只使用了Axes的實(shí)例對(duì)象ax

第三部分繪制圖形,根據(jù)提供的數(shù)據(jù),選擇不同的繪制方式和表現(xiàn)方式,這也是繪制的核心區(qū)域。

最后一部分,圖形編輯,可以完善圖形的相關(guān)信息,比如圖名、坐標(biāo)軸名、網(wǎng)格、圖例等。

一般處于調(diào)試需求,會(huì)將最后的圖形輸出并顯示,即plt.show

繪制方式

上圖中我們展示了折線圖的畫法,在matplotlib庫(kù)中,針對(duì)不同數(shù)據(jù)和表現(xiàn)形式有不同的繪制方式。這里做簡(jiǎn)單列舉。

散點(diǎn)圖

x = np.random.rand(100)
y = np.random.rand(100)

fig, ax = plt.subplots()

ax.scatter(x, y)

ax.set_title("Scatter")
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.grid(True)

展示效果為:

柱狀圖

# 柱狀圖
categories = ['A', 'B', 'C', 'D', 'E', 'F']
values = [79, 68, 89, 94, 54, 77]

fig, ax = plt.subplots()

ax.bar(categories, values)

ax.set_title("Bar")
ax.set_xlabel("Student")
ax.set_ylabel("Scores")

plt.show()

展示效果為:

直方圖

# 直方圖
data = np.random.randn(1000)

fig, ax = plt.subplots()

ax.hist(data, bins = 100, color = "green", alpha = 0.75)

ax.set_title("Histogram")
ax.set_xlabel("Value")
ax.set_ylabel("Frequency")
ax.grid(True)

plt.show()

展示效果為:

多子圖繪制

上面提及,matplotlib庫(kù)允許多子圖繪制,比如對(duì)于一種數(shù)據(jù)我們可能想要多種表達(dá)方式,而這種表達(dá)方式不適合放在單圖中表示的時(shí)候,就需要這種表達(dá)。我們可以在subplot()函數(shù)中添加參數(shù),以實(shí)現(xiàn)這種繪制方式。

# 多子圖繪制
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

fig, axs = plt.subplots(1, 2, figsize=(10, 8))

axs[0].plot(x, y1)
axs[0].set_title('sin(x)')
axs[0].set_xlabel('x')
axs[0].set_ylabel('sin(x)')
axs[0].grid(True)

axs[1].plot(x, y2)
axs[1].set_title('cos(x)')
axs[1].set_xlabel('x')
axs[1].set_ylabel('cos(x)')
axs[1].grid(True)

fig.suptitle('sin(x) VS. cos(x)', fontsize = 18)

plt.show()

展示效果為:

本示例中,將正弦函數(shù)和余弦函數(shù)繪制在同一區(qū)域中,可以更好地滿足特定情況下的繪制需求。同時(shí),該示例也更好的體現(xiàn)出了FigureAxes的區(qū)別。

二維數(shù)據(jù)繪制

在一些可視化需求中,往往不是簡(jiǎn)單的數(shù)字?jǐn)?shù)據(jù)繪制,而是會(huì)出現(xiàn)一些二維數(shù)據(jù)如.grd格式的文件可視化。這里利用GMT工具繪制的.grd文件作為原始數(shù)據(jù),通過matplotlib庫(kù)進(jìn)行可視化需求,數(shù)據(jù)格式為netCDF-4。

原圖如下:

代碼如下:

import matplotlib.pyplot as plt
from netCDF4 import Dataset

## 準(zhǔn)備數(shù)據(jù)
file_path = "C:/Users/hang/Downloads/test.grd"
nc = Dataset(file_path, 'r')
lon = nc.variables['lon'][:]
lat = nc.variables['lat'][:]
z = nc.variables['z'][:]
nc.close()

## 創(chuàng)建畫布和容器
fig, ax = plt.subplots(figsize = (10, 8))

## 圖形繪制
## pcolormesh是一個(gè)用于繪制二維網(wǎng)格數(shù)據(jù)的函數(shù),能夠?qū)?shù)值映射為顏色
mesh = ax.pcolormesh(lon, lat, z, cmap = 'jet', shading = 'auto')

## 圖形編輯
cbar = fig.colorbar(mesh, ax = ax)
cbar.set_label('Height', fontsize = 14)
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')
ax.grid(True)

plt.show()

同樣是幾行數(shù)據(jù),按照相同的邏輯,即可進(jìn)行該文件的可視化:

其他用法

matplotlib庫(kù)提供了相當(dāng)豐富的可視化工具,同時(shí),也提供了一些有關(guān)交互可視化的工具,這部分將于后續(xù)單獨(dú)介紹。

總結(jié)

到此這篇關(guān)于Python可視化與交互matplotlib庫(kù)的文章就介紹到這了,更多相關(guān)Python matplotlib庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

云和县| 安国市| 广河县| 柯坪县| 锡林郭勒盟| 疏附县| 五寨县| 焉耆| 金塔县| 秭归县| 柏乡县| 晋中市| 东莞市| 常德市| 海宁市| 江孜县| 衡水市| 丹东市| 南阳市| 明光市| 祁东县| 民丰县| 岢岚县| 朝阳县| 越西县| 临高县| 韩城市| 临西县| 当涂县| 金湖县| 博白县| 华亭县| 梨树县| 淳安县| 玉山县| 安塞县| 沙湾县| 从化市| 永善县| 前郭尔| 揭东县|