溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

matplotlib庫有什么用

發(fā)布時間:2021-11-25 15:08:42 來源:億速云 閱讀:322 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹matplotlib庫有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Matplotlib 是一個 Python 的 2D繪圖庫(當(dāng)然也可以畫三維形式的圖形哦),它以各種硬拷貝格式和跨平臺的交互式環(huán)境生成出版質(zhì)量級別的圖形 。通過 Matplotlib,開發(fā)者僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。

Matplotlib 主要有兩大模塊:pyplot 和 pylab,這二者之間有何區(qū)別和聯(lián)系呢?

首先 pyplot 和 pylab 都可以畫出圖形,且兩者 API 也是類似的, 其中 pylab 包括了許多 numpy 和 pyplot 模塊中常用的函數(shù),對交互式使用(如在 IPython 交互式環(huán)境中)來說比較方便,既可以畫圖又可以進行計算,不過官方推薦對于項目編程最好還是分別導(dǎo)入 pyplot 和 numpy 來作圖和計算。

先來個簡單的

import numpy as np
from matplotlib import pyplot as plt


x = np.arange(0, 11)
y = 2*x
plt.plot(x, y, marker='o')
plt.show()

matplotlib庫有什么用

同一幅圖中多條線

x = np.arange(0, 11)
y1 = 2*x
y2 = 4*x
# g-- 表示綠色虛線  r- 表示紅色實線
plt.plot(x, y1, 'g--') 
plt.plot(x, y2, 'r-')
plt.show()

Matplotlib Api 風(fēng)格

Matplotlib 有兩種編程風(fēng)格,一種是 Matlab 用戶熟悉的風(fēng)格,一種是面向?qū)ο笫降娘L(fēng)格,推薦后者

Matlab 風(fēng)格的 Api

plt.figure(figsize=(10, 5))
x = [1, 2, 3]
y = [2, 4, 6]
plt.plot(x, y, 'r')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.title('figure title')
plt.show()

面向?qū)ο箫L(fēng)格的 Api

fig = plt.figure(figsize=(10, 5))
# add_subplot(nrows, ncols, index, **kwargs) 默認 (1, 1, 1)
axes = fig.add_subplot()
x = [1, 2, 3]
y = [2, 4, 6]
axes.plot(x, y, 'r')
axes.set_xlabel('x axis')
axes.set_ylabel('y axis')
axes.set_title('figure title')
plt.show()

都得到以下圖形

matplotlib庫有什么用

多個子圖

fig: plt.Figure = plt.figure(figsize=(10, 5))
axes1 = fig.add_subplot(2, 1, 1)  # (nrows, ncols, index)
# 與 axes1 共享x,y軸
# the axis will have the same limits, ticks, and scale as the axis
# facecolor: 坐標軸圖形背景顏色
axes2 = fig.add_subplot(2, 1, 2, sharex=axes1, sharey=axes1, facecolor='k')
x = np.linspace(-5, 5, 100)
y1 = np.sin(x)
y2 = np.cos(x)
axes1.plot(x, y1, color='red', linestyle='solid')
axes2.plot(x, y2, color='#00ff00', linestyle='dashed')
axes1.set_title('axes1 title')
axes2.set_title('axes2 title')
plt.show()

# 設(shè)置圖的位置、大小
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])  # [left, bottom, width, height]
axes2 = fig.add_axes([0.7, 0.7, 0.2, 0.2])

matplotlib庫有什么用

對象關(guān)系

在 matplotlib 中,整個圖像為一個 Figure 對象。在 Figure 對象中可以包含一個,或者多個 Axes 對象,每個 Axes 對象都是一個擁有自己坐標系統(tǒng)的繪圖區(qū)域。

Title——標題
Axis——坐標軸
Label——坐標軸標注
Tick——刻度線
Tick Label——刻度注釋

matplotlib庫有什么用

簡寫形式

matplotlib庫有什么用

點標記

只列出了常用的(只支持簡寫形式)

圖例

axes.plot(x, y, 'r', label='y=2x')
# or
axes.set_label('y=2x')
axes.legend(loc='upper right')  # 默認 legend(loc='best')
# 同時設(shè)置多個
plt.legend((axes1, axes2, axes3), ('label1', 'label2', 'label3'))

matplotlib庫有什么用

調(diào)整坐標軸的上下限

# xlim(left=None, right=None, emit=True, auto=False, *, xmin=None, xmax=None) 
# ylim(bottom=None, top=None, emit=True, auto=False, *, ymin=None, ymax=None) 
axes.set_xlim(0, 8)
axes.set_ylim(0, 8)

直至坐標軸顯示間隔

from matplotlib.ticker import MultipleLocator
# 如設(shè)置主要刻度線間隔為 2
axes.xaxis.set_major_locator(MultipleLocator(2))

調(diào)整坐標軸標簽的顯示

# 當(dāng)點比較密集時,x 軸刻度線標簽可能會重疊在一起,尤其是時間時
# 1. 對于時間可以使用 autofmt_xdate 自動調(diào)整對齊和旋轉(zhuǎn)
fig.autofmt_xdate()
# 2. 通用的
ax.set_xticklabels(xticks, rotation=30, ha='right')

# 對于日期顯示還可以自定義格式
from matplotlib.dates import DateFormatter
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m'))

設(shè)置坐標軸名稱

# 坐標軸下方或左邊顯示的標簽
ax.set_xlabel('Time Series')
ax.set_ylabel('Microseismicity')

綜合示例

fig = plt.figure()
axes = fig.add_subplot()

t = np.linspace(0, np.pi, 64)
x = np.sin(t)
y = np.cos(t) + np.power(x, 2.0 / 3)
# 采用參數(shù)定義樣式
axes.plot(x, y, color='red', marker='o', linestyle='solid', linewidth=2, label='x>0')
# 采用簡寫 color marker linestyle 沒有順序之分,不需要都寫
axes.plot(-x, y, 'ro-', linewidth=2, label='x<0')
# 設(shè)置標題
axes.set_title('心型圖', fontdict={'size': 16, 'color': 'r', 'family': 'SimHei'})
# 設(shè)置坐標軸數(shù)值范圍
axes.set_xlim(-1.5, 1.5)
# 設(shè)置坐標軸刻度線
axes.set_xticks([-1.5, -1, 0, 1, 1.5])
# 設(shè)置坐標軸刻度線標簽,不設(shè)置則是坐標軸數(shù)值
axes.set_xticklabels(['-1.5', '-1', '原點', '1', '1.5'], fontdict={'family': 'SimHei'})
# 設(shè)置顯示圖例
axes.legend()
# 設(shè)置顯示網(wǎng)格線
axes.grid(color='#cccccc', ls='-.', lw=0.25)

plt.show()

一些配置項

# 使用 pycharm 運行 plt.show() 默認不在獨立窗口顯示(terminal 運行可以)
# 切換 backend 為 TkAgg 時, pycharm 運行可以在獨立窗口展示圖,同時 terminal 運行也可以
# 默認 non-interactive backends = agg
# 如果不切換 backend 又想在獨立窗口顯示,可以按如下設(shè)置
# File -> Settings -> Tools -> Python Scientific -> 去掉Show plots in tool window勾選
plt.switch_backend('TkAgg')

# 當(dāng) figure 開啟超過 20 個時會有警告(一般循環(huán)畫圖出現(xiàn)),可以主動 close 圖
for y in data:
    fig: plt.Figure = plt.figure()
    axes = fig.add_subplot()
    axes.plot(y, color='red', marker='o', linestyle='solid')
    plt.savefig('xxx.png')
    plt.close()


# 設(shè)置網(wǎng)格線
plt.grid(True)

# 設(shè)置字體,默認不支持中文顯示,可以指定中文字體來顯示中文
plt.rcParams["font.family"] = 'SimHei'  # mac os可以使用 Heiti TC
# 也可以在使用的時候分別設(shè)置
axes.set_title('中文字體 SimHei', fontdict={'size': 16, 'color': 'r', 'family': 'SimHei'})

# 解決坐標軸負數(shù)的負號顯示問題
plt.rcParams['axes.unicode_minus'] = False

matplotlib庫有什么用

圖形類型

matplotlib庫有什么用

以上是“matplotlib庫有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI