matplotlib 使用簡明教程(二)-常用圖表

matplotlib 使用簡明教程(二)-常用圖表

Matplotlib 中最重要的一個模塊應該就是 matplotlib.pyplot 了,裏邊包括了幾乎所有普通用戶需要調用的功能。
另外 numpy 作爲一個多維數組/矩陣的模塊,也經常和 Matplotlib 一起被使用

matplotlib 官方建議在引用這兩個庫的時候,使用如下語法:

import matplotlib.pyplot as plt
import numpy as np

點線圖

plt.plot(x1, y1, '樣式1', x2, y2, '樣式2', x3, y3, '樣式3', ...)

用於繪製折線圖。
其中 xn、yn 爲第 n 條曲線的 x、y 的值(n = 1, 2, 3, …)
樣式n 爲每個曲線的樣式,本篇暫不做介紹。
返回值是一個數組,其中每個元素都是繪製的曲線。

plt.loglog(*args, **kwargs)

用於繪製折線圖,與 plot 的區別在於 x 軸和 y 軸都是指數型的。

重要參數:
basex, basey: x、y 軸的底,需要大於 1

plt.semilogx(*args, **kwargs)plt.semilogy(*args, **kwargs)

用於繪製折線圖,兩個函數的 x 軸、y 軸分別是指數型的。

支持 plot 函數的所有參數,分別有一個重要參數:

  • basex: x 軸的底,需要大於 1
  • basey: y 軸的底,需要大於 1

plt.step(x, y, *args, data=None, **kwargs)

類似 plot 函數,但是曲線是階梯狀的。

重要參數:
where: pre、post 或 mid,即數據點處於階梯的右側、左側還是正中

在這裏插入圖片描述

plt.plot_date(z, y, tz, xdate, ydate)

與 plot 類似,可以把總座標/橫座標當做 matplotlib.dates 類型數據來處理

  • x, y: x、y 座標對
  • xdate, ydate: 是否將 x、y 軸作爲 matplotlib.dates 類型來處理,默認 xdate 爲 True,ydate 爲 False

plt.errorbar(x, y, yerr=None, xerr=None, lolims=False, uplims=False, xlolims=False, xuplims=False, **kwargs)

用於繪製帶有 誤差線的折線圖。
重要參數:

  • yerr, xerr: 誤差程度。
    • 如果是一個數字,則所有數據點的誤差是一個統一的數字;
    • 如果是一個一維的數組(N),則數組表明了每個數據點正向、負向的誤差程度
    • 如果是一個二維的數組(2, N),則數組表明了每個數據點,正向以及負向各自的誤差程度
  • lolims, uplims, xlolims, xuplims: 誤差方向,是否只有正向或負向的誤差,布爾型
    可以是一維數組,或一個單獨的參數

在這裏插入圖片描述

柱狀圖、填充圖

plt.bar(x, height, width=0.8, bottom=0, *args, **kwargs)

柱狀圖,重要參數:

  • x:數據集的名稱
  • height:數據集中各個數據的高度
  • width:柱體的寬度
  • bottom:柱體底部的位置

height 一次爲一個一維的數組。
如果柱狀圖希望疊加(如下圖),可以多次調用 bar 函數。

在這裏插入圖片描述

plt.barh(*args, **kwargs)

plt.bar() 函數類似,不過是水平方向的。

重要參數:

  • y:數據集的名稱
  • width:數據集中各個數據的高度
  • height:柱體的寬度
  • left:柱體底部的位置

plt.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, hold=None, data=None, **kwargs)

y1 和 y2 之間進行填充。

重要參數:

  • x:橫座標的數組
  • y1、y2:需要填充的 y 座標的數組
  • where:一個 bool 類型的數組,確定 x 數組哪些位置需要填充
  • step:是否要採用柱狀填充(默認採取曲線填充),可以爲 ‘pre’、‘post’、‘mid’

plt.fill_betweenx(y, x1, x2=0, where=None, step=None, interpolate=False, hold=None, data=None, **kwargs)

plt.fill_betwwen() 函數類似,但是是進行水平方向,即 x1 和 x2 之間填充。

重要參數:

  • y:縱座標的數組
  • x1、x2:需要填充的 x 座標的數組
  • where:一個 bool 類型的數組,確定 y 數組哪些位置需要填充
  • step:是否要採用柱狀填充(默認採取曲線填充),可以爲 ‘pre’、‘post’、‘mid’

stackplot(x, *args, **kwargs)

繪製多層圖,或稱堆疊式圖區。

在這裏插入圖片描述

重要參數:

  • x:橫座標數組
  • y 或 y1, y2, y3, …:縱座標數據的數組,可以用 y 作爲多維數組,也可以用 y1, y2, y3, … 這樣多個數組
  • baseline:確定圖表底線的方式。
    • zero:固定 0 作爲底線
    • sym:堆棧對稱的位置作爲底線
    • wiggle:我也不是很明白,似乎是希望讓各個邊界的曲線儘量平緩
    • weighted_wiggle:同樣不是很明白,看起來是上邊緣固定爲 0

plt.fill(*args, **kwargs)

填充一個個的多邊形,調用方式如下:

ax.fill(x, y[, 樣式描述字符串])    # x 和 y 分別是某一個多邊形的橫、縱座標數組
ax.fill(x1, y2[, 樣式描述字符串], x2, y2[, 樣式描述字符串], x3, y3[, 樣式描述字符串])            
# 每對 xn、yn描述了一個多邊形

散點圖、分佈圖

plt.scatter(x, y, s=None, c=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)

二維的散點圖,重要參數:

  • x, y: x、y 座標序列
  • s: 每個點的大小
  • c: 顏色
  • alpha: 透明度

在這裏插入圖片描述

stem([x,] y, linefmt=None, markerfmt=None)

散點的杆圖

重要參數:

  • x(可選):橫座標的數組
  • y:縱座標的數組
  • linefmt:連線格式
  • markderfmt:標記點格式

在這裏插入圖片描述

plt.eventplot(positions, orientation='horizontal', lineoffsets=1, linelengths=1, linewidths=None, colors=None, linestyles='solid', hold=None, data=None, **kwargs)

類似蛋白質電泳圖,每個數據點將被繪製成一根數據線。

在這裏插入圖片描述

重要參數:

  • orientation:分佈的方向,‘horizontal’ 或 ‘vertical’。默認方向爲水平,即上圖方向
  • positions:一維或二維數組,每一行都是一組數據。每組數據中各個成員是數據線的位置(無序的),例如上圖,從上到下共 6 組數據,分別規定了數據線的水平位置
  • lineleghths:每條數據線的長度,例如上圖,數據線的高度
  • lineoffsets:每組數據的偏移位置,例如上圖中 6 組數據的垂直位置

plt.broken_barh(xranges, yrange, hold=None, data=None, **kwargs)

效果上和泳道圖有類似之處。

在這裏插入圖片描述

重要參數:

  • xranges:(xmin, xwidth) 組成的數組,其中 xmin 是每個塊左端的 x 座標,xwidth 是每個塊的寬度
  • yranges:(ymin, ymax)規定某一組方塊的 y 座標位置

比例圖

plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)

繪製餅圖。

重要參數:

  • x:餅大小的數據
  • explode:各個餅距離中心的距離,1 表示距離圓心一個半徑的距離
  • labels:各個餅的文字標籤
  • labeldistance:文字標籤距離圓心的距離,1 表示距離圓心一個半徑的距離
  • autopct:定義百分比數據的格式,例如 ‘%.0f%%’ 表示不保留小數點,並且需要加上百分號
  • pctdistance:百分比數據距離圓心的距離,1 表示距離圓心一個半徑的距離
  • startangle:開始角度,0-360 度
  • radius:整個餅圖的角度,默認 1

系列文章:

matplotlib 使用簡明教程(一)-基礎概念:
https://blog.csdn.net/fenghuizhidao/article/details/79352882
matplotlib 使用簡明教程(二)-常用圖表
https://blog.csdn.net/fenghuizhidao/article/details/83090043
matplotlib 使用簡明教程(三)-一些專業圖表簡介
https://blog.csdn.net/fenghuizhidao/article/details/83090165
matplotlib 使用簡明教程(四)-輔助性元件
https://blog.csdn.net/fenghuizhidao/article/details/83090249
matplotlib 使用簡明教程(五)-畫布、圖表、元素基礎操作
https://blog.csdn.net/fenghuizhidao/article/details/83090320
matplotlib 使用簡明教程(六)-圖像、動畫相關
https://blog.csdn.net/fenghuizhidao/article/details/83090512
matplotlib 使用簡明教程(七)-樣式定義
https://blog.csdn.net/fenghuizhidao/article/details/83090553

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章