日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3(三)Matplotlib

發布時間:2023/12/15 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3(三)Matplotlib 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據展示Matplotlib

目錄

  • 1 Matplotlib庫
    • 1.1 Matplotlib的介紹
    • 1.2 pyplot的plot()函數
    • 1.3 pyplot的中文顯示
    • 1.4 pyplot的文本顯示
    • 1.5 繪制子繪圖區域
  • 2 基礎繪圖函數
    • 2.1 基礎圖標函數概述
    • 2.2 餅圖的繪制
    • 2.3 直方圖的繪制
    • 2.4 極坐標的繪制
    • 2.5 散點圖的繪制
  • 3 引力波的繪制
    • 3.1 介紹
    • 3.2 編寫

?

正文

主要內容是Matplotlib庫的基本使用和方法

回到頂部

1 Matplotlib庫

1.1 Matplotlib的介紹

  Python優秀的數據可視化第三方庫

  數據可視化就是將數據以特定的圖形圖像的方式展示出來, 使數據更加的直觀明了

  范例網站

  Matplotlib庫是由各種可視化類構成, 內部結構復雜

  為了簡潔使用, 可以使用matplotlib.pyplot這個繪制各類可視化圖形的命令子庫, 類似于快捷方式的庫來簡化操作

  導入

import matplotlib.pyplot as plt

    同樣plt也是約定俗成的別名

  基本使用

    使用plt.plot(數組)傳入數組, 如果只有一個一維數組, 那么數組的值會指定給Y軸, X軸為他們的索引值

    使用plt.ylabel(名字)設置Y軸的名字

    使用plt.savefig(文件名, dpi=dpi的大小)保存圖像為圖像文件, dpi一般設置為600, 默認是PNG格式保存

    使用plt.show()在IPython中展示生成的圖形

    使用plt.axis([x1, x2, y1, y2])可以設置X軸的起點和終點, Y軸的起點和終點

    相關代碼如下

?
1234567import matplotlib.pyplot as pltplt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])plt.ylabel("Y")plt.axis([-1, 10, 0, 6])plt.savefig("test", dpi=600)plt.show()

    相關結果如下

    

  pyplot的繪圖區域

    使用plt.subplot(nrows, ncols, plot_number)在全局繪圖區域中創建一個分區體系, 然后指定在哪個子區域里繪圖

    其中nrows表示橫向劃分多少的區域, ncols表示縱向劃分多少的區域, 子區域的標號是從1開始的, 從上到下從左到右依次排序

    另外在數量小的時候, 這三個參數之間的逗號可以去掉

    具體代碼如下

?
1234567891011121314import numpy as npimport matplotlib.pyplot as pltdef f(t):????return np.exp(-t) * np.cos(2*np.pi*t)a = np.arange(0.0, 5.0, 0.02)plt.subplot(211)plt.plot(a, f(a))plt.subplot(2,1,2)plt.plot(a, np.cos(2*np.pi*a), 'r--')plt.show()

    具體效果如下

    

1.2 pyplot的plot()函數

  plot()的具體形式如下:

plt.plot(x, y, format_string, **kwargs)

    x: X軸的數據, 可以是列表或者數組, 可選項, 但是當繪制多條曲線的時候, 各條曲線的x不能省略

    y:?Y軸的數據, 列表或數組, 必填項

    format_string: 控制曲線的格式的字符串, 可選項

    **kwargs: 第二組或更多的 (x, y, format_string)

    繪制多條圖像

?
123456import numpy as npimport matplotlib.pyplot as plta = np.arange(10)plt.plot(a, 1.5*a, a, 2.5*a, a, 3.6*a, a, 4.5*a)plt.show()

    結果為

    

  曲線的格式控制

    format_string由制顏色字符, 風格字符和標記字符組成

    具體有

    

    

    

    更改之前的風格代碼

?
123456import numpy as npimport matplotlib.pyplot as plta = np.arange(10)plt.plot(a, 1.5*a, 'go-', a, 2.5*a, 'rx', a, 3.6*a, '*', a, 4.5*a, 'b-.')plt.show()

    效果為

    

  關于**kwargs

    可以添加更多更詳細的參數

    color: 控制顏色, color=”green”

    linestyle: 線條風格, linestyle=”dashed”

    marker: 標記風格, marker=”o”, 這三個和前面的format是對應的, 此外還有

    markerfacecolor: 標記的顏色,?markerfacecolor=”blue”

    markersize: 標記的尺寸, markersize=20

    …

1.3 pyplot的中文顯示

  默認情況下, pyplot并不支持中文字符, 在最開始的折線圖中, 如果設置ylabel()為中文, 則在圖像中不能正常顯示

  要顯示中文有種辦法

  1) 使用rcParams

    設置其font.family為中文字符

    具體代碼如下

?
123456789import matplotlib.pyplot as pltimport matplotlibmatplotlib.rcParams['font.family'] = 'SimHei'plt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])plt.ylabel("Y軸坐標")plt.axis([-1, 10, 0, 6])plt.savefig("test", dpi=600)plt.show()

    具體效果

    

      其中SimHei是黑體

    具體更多參數

    

    相應的中文字體種類

    

    參考實例

?
123456789101112131415import numpy as npimport matplotlib.pyplot as pltimport matplotlibmatplotlib.rcParams['font.family'] = 'FangSong'matplotlib.rcParams['font.size'] = 20???????????????????a = np.arange(0.0, 5.0, 0.02)plt.xlabel("X軸: 時間")plt.ylabel("Y軸: 振幅")plt.plot(a, np.cos(2*np.pi*a)+1, 'r--')plt.savefig('test2', dpi=600)plt.show()

    效果為

  

  2) 增加 fontproperties屬性

    在上述的例子中, 可以在xlabel中增加參數fontproperties來限定顯示的字體, 用此來解決中文顯示

    具體代碼如下

?
12345678910import numpy as npimport matplotlib.pyplot as plt???????????????????a = np.arange(0.0, 5.0, 0.02)plt.xlabel("X軸: 時間", fontproperties="FangSong", fontsize=20)plt.ylabel("Y軸: 振幅", fontproperties="FangSong", fontsize=20)plt.plot(a, np.cos(2*np.pi*a)+1, 'r--')plt.show()

  兩種方法的區別就是第一種是全局修改, 第二種是指定修改

  建議使用第二種方法, 但是為了統一可以使用方法一

1.4 pyplot的文本顯示

  常見的文本顯示函數是

    

    其中title會在整個圖形的正中上放寫上文字

  具體實例如下

?
12345678910111213141516import numpy as npimport matplotlib.pyplot as plta = np.arange(0.0, 5.0, 0.02)plt.plot(a, np.cos(2*np.pi*a)+2, 'r--')plt.xlabel("X軸: 時間", fontproperties="FangSong", fontsize=15, color='green')plt.ylabel("Y軸: 振幅", fontproperties="FangSong", fontsize=15)plt.title(r'正玄波實例$y=cos(2\pi x)$', fontproperties="SimHei", fontsize=25)plt.text(2, 3, r'$\mu=100$', fontsize=15)plt.axis([-1, 6, 0, 4])plt.grid(True)plt.savefig('test3', dpi=600)plt.show()

  效果為

  

  其中$$這種是LeTeX的語法

  title()第一個參數表示橫坐標的位置, 第二個參數是縱坐標的位置

  grid(True)增加網格顯示

  關于annotate函數

plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)

    s: 要注解的字符串

    xy: 箭頭所在的位置, 元組類型

    xytext: 文本顯示的位置, 元組類型

    arrowprops: 定義了整個箭頭顯示的屬性, dict()

      facecolor=”顏色” 箭頭的顏色

      shrink 起始會按照指定的比例縮進, 這樣箭頭與兩邊的內容會留有一下空白

      width 箭頭的寬度

  具體代碼如下

?
123456789101112131415161718import numpy as npimport matplotlib.pyplot as plta = np.arange(0.0, 5.0, 0.02)plt.plot(a, np.cos(2*np.pi*a)+2, 'r--')plt.xlabel("X軸: 時間", fontproperties="FangSong", fontsize=15, color='green')plt.ylabel("Y軸: 振幅", fontproperties="FangSong", fontsize=15)plt.title(r'正玄波實例$y=cos(2\pi x)$', fontproperties="SimHei", fontsize=25)plt.annotate(r"$\mu=100$", xy=(2, 3), xytext=(3, 3.5), arrowprops=dict(????????facecolor="black", shrink=0.1, width=2????????))plt.axis([-1, 6, 0, 4])plt.grid(True)plt.savefig('test3', dpi=600)plt.show()

  效果為

  

1.5 繪制子繪圖區域

  使用subplot可以進行簡單的分區, 具體實現復雜的分區需要另一個函數

  plt.subplot2grid()?

plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)

    基本使用方法是: 先將整個布局進行均分, 然后指定一塊小區域作為起始點, 然后使用colspan和rowspan來在橫向和縱向上增加小塊的個數

    GridSpec: 整體劃分, 元組類型

    CurSpec: 指定起始小塊位置, 元組類型

    colspan: 橫向小塊數量

    rawspan: 縱向小塊數量

    選擇實例:

    

  使用GridSpec類可以簡化操作

    導入

import matplotlib.gridspec as gridspec

    生成gridspec對象

gs = gridspec.GridSpec(3, 3)

    使用切片的方式來獲取

    具體如下

    

回到頂部

2 基礎繪圖函數

2.1 基礎圖標函數概述

  使用繪制函數的基本思想:

    圖像的種類是繁多的, 我們應該專注于選擇與更合適的圖表來結合數據, 而不是學習使用所有的函數

  

  

  

2.2 餅圖的繪制

  常用于百分比的內容, 尤其是需要對比組成部分, 占有比例的時候, 更是直觀

  生成餅圖的函數pie

plt.pie(sizes, explode=(), labels=(), autopct="", shadow=False, startangle=90)

    sizes: 元組類型, 各個成分的占比

    explode: 元組類型, 優先級, 優先級高的會突出來, 為0是正常組成部分

    labels: 各個部分對應的標簽名字, 要和sizes對應上

    autopct: 顯示比例的格式

    shadow: 是否有陰影

    startangle: 起始繪圖時候的角度, 和極坐標角度類似

  具體實例

?
12345678910import matplotlib.pyplot as pltlabels = "Python", "Java", "C/C++", "C#", "Javascript", "Other"sizes = [31.2, 19.6, 15.9, 7.4, 3.6, 22.3]explode = [0.1, 0, 0 ,0 , 0, 0]plt.pie(sizes, explode=explode, labels=labels, autopct="%.2f%%", shadow=True, startangle=90)plt.title(r'2015最受歡迎的編程語言', fontproperties="SimHei", fontsize=15)plt.show()

  具體效果

  

  如果希望圖形不是側著的, 可以使用

plt.axis('equal')

2.3 直方圖的繪制

  使用hist畫直方圖

hist(x, bins, normed, histtype, facecolor, alpha)

    x: 處理的數據

    bins: 生成的圖形中, 直方(在X軸上直立的長條矩形)的個數

      具體情況是: 找到x中的最小值和最大值, 然后在這個值域中均分bins份, 每一份都是一個小的值域, x中的元素就會對應的落在相應的值域中, Y軸的值就是在這個值域的數量(normed=False時)

    normed: 為True會歸一化成概率, 為False時Y軸顯示的是數量, 默認為False

   ?具體代碼如下

?
12345678910111213import numpy as npimport matplotlib.pylab as pltnp.random.seed(0)mu, sigma = 100, 20a = np.random.normal(mu, sigma, size=100)plt.hist(a, 30, normed=False, histtype='stepfilled', facecolor='b',?????????alpha=0.75)plt.title("Histogram")plt.show()

  效果如下

  

2.4 極坐標的繪制

  繪制極坐標用

ax = plt.subplot(111, projection='polar')

    通過生成一個對象ax, 來繪制極坐標的圖像

    通過ax.bar()來設置圖像

bar(left, height, width=0.8, bottom=None, **kwargs)

      left: 繪制極坐標時的開始位置, 圖中的某個位置

      height: 中心點向邊界延伸的長度

      width: 旋轉的寬度

  具體代碼如下

?
12345678910111213141516import matplotlib.pylab as pltimport numpy as npN = 20theta = np.linspace(0.0, 2*np.pi, N, endpoint=False)radii = 10*np.random.rand(N)width = np.pi/4*np.random.rand(N)ax = plt.subplot(111, projection='polar')bars = ax.bar(theta, radii, width=width, bottom=0.0)for r, bar in zip(radii, bars):????bar.set_facecolor(plt.cm.viridis(r/10.))????bar.set_alpha(0.5)plt.show()

  具體效果為

  

2.5 散點圖的繪制

  具體代碼

?
12345678import matplotlib.pylab as pltimport numpy as npfig, ax = plt.subplots()ax.plot(10*np.random.random(100), 10*np.random.randn(100), 'o')ax.set_title("simple Scatter")plt.show()

  具體效果

  

回到頂部

3 引力波的繪制

3.1 介紹

  引力波是因為時空彎曲對外以輻射形式傳播的能量

  愛因斯坦的廣義相對論預言了引力波的存在

3.2 編寫

  產生時間序列

  讀取應變數據

  繪制H1 Strain

  顯示并保存圖像   

分類: 數據分析


總結

以上是生活随笔為你收集整理的python3(三)Matplotlib的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。