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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Matplotlib基础(part1)--基本绘图

發(fā)布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matplotlib基础(part1)--基本绘图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)習(xí)筆記,這個筆記以例子為主。
開發(fā)工具:Spyder


文章目錄

    • matplotlib概述
    • matplotlib基本繪圖
      • 先來幾個案例簡單了解一下matplotlib
        • 案例1(繪制一條余弦曲線)
        • 案例2(繪制水平線與垂直線)
        • 案例3(繪制多條垂直/水平線)
      • 線型、線寬和顏色
      • 設(shè)置坐標軸范圍
      • 設(shè)置坐標刻度
        • 舉個例子(修改坐標軸刻度)
        • 舉個例子2(Latex排版語法字符串)
      • 設(shè)置坐標軸
      • 圖例
      • 特殊點
      • 備注


matplotlib概述

matplotlib是python的一個繪圖庫。使用它可以很方便的繪制質(zhì)量級別高的圖形。

matplotlib基本繪圖

先來幾個案例簡單了解一下matplotlib

案例1(繪制一條余弦曲線)

  • 語法
import numpy as np import matplotlib.pyplot as mp# xarray: <序列> 水平坐標序列 # yarray: <序列> 垂直坐標序列 mp.plot(xarray, yarray) #顯示圖表 mp.show()

代碼:

import numpy as np import matplotlib.pyplot as mp#生成一條正弦曲線 x = np.linspace(-np.pi, np.pi, 1000) print(x.shape) sin_x = np.sin(x) #繪制 mp.plot(x, sin_x) mp.show()

圖像:

案例2(繪制水平線與垂直線)

  • 語法
import numpy as np import matplotlib.pyplot as mp# vertical 繪制垂直線 mp.vlines(vval, ymin, ymax, ...) #vval為x坐標值,ymin和ymax為垂直線的最小最大值# horizotal 繪制水平線 mp.hlines(xval, xmin, xmax, ...) #xval為y坐標值, xmin和xmax為水平線的最小最大值 #顯示圖表 mp.show()

代碼:

import numpy as np import matplotlib.pyplot as mpxs = np.arange(6) ys = np.array([20, 60, 40, 50, 10, 20]) mp.plot(xs, ys)mp.vlines(3, 20, 50) mp.hlines(30, 1, 4) mp.show()

圖像:

案例3(繪制多條垂直/水平線)

代碼:

import numpy as np import matplotlib.pyplot as mpxs = np.arange(6) ys = np.array([20, 60, 40, 50, 10, 20]) mp.plot(xs, ys)mp.vlines([3, 5, 7], 20, 50) mp.hlines(30, 1, 4) mp.show()

圖像:

線型、線寬和顏色

  • 語法
mp.plot(xarray, yarray, linestyle='', linewidth=1, color='', alpha=0.5)

參數(shù)表:

參數(shù)含義參數(shù)值
linestyle線型"-" "--" ":" ".-"
linewidth線寬數(shù)字
color顏色顏色的英文單詞 / 常見顏色英文單詞首字母 / #495434 / (1,1,1) / (1,1,1,1)
alpha透明度浮點數(shù)值

顏色表:

  • 舉個例子

代碼:

import numpy as np import matplotlib.pyplot as mpx = np.linspace(-np.pi, np.pi, 1000) sin_x = np.sin(x) cos_x = np.cos(x)mp.plot(x, sin_x, linestyle=':', alpha = 0.8,linewidth= 2, color='dodgerblue')mp.plot(x, cos_x, linestyle='-.', alpha = 0.8,linewidth= 2, color='orangered')mp.show()

圖像:

設(shè)置坐標軸范圍

  • 語法
mp.xlim(x_limt_min, x_limit_max) #x_limt_min: <float> x軸范圍最小值 #x_limit_max: <float> x軸范圍最大值 mp.ylim(y_limt_min, y_limit_max) #y_limt_min: <float> y軸范圍最小值 #y_limit_max: <float> y軸范圍最大值
  • 舉個例子(設(shè)置坐標軸范圍)

代碼:

import numpy as np import matplotlib.pyplot as mpx = np.linspace(-np.pi, np.pi, 1000) sin_x = np.sin(x) cos_x = np.cos(x)mp.plot(x, sin_x, linestyle=':', alpha = 0.8,linewidth= 2, color='dodgerblue')mp.plot(x, cos_x, linestyle='-.', alpha = 0.8,linewidth= 2, color='orangered')mp.xlim(0, np.pi) mp.ylim(0, 1)mp.show()

圖像:

設(shè)置坐標刻度

  • 語法
mp.xticks(x_val_list, x_text_list) #x_val_list: x軸刻度值序列 #x_text_list: x軸刻度標簽文本序列 [可選] mp.yticks(y_val_list, y_text_list) #y_val_list: y軸刻度值序列 #y_text_list: y軸刻度標簽文本序列 [可選]

舉個例子(修改坐標軸刻度)

代碼:

import numpy as np import matplotlib.pyplot as mpx = np.linspace(-np.pi, np.pi, 1000) sin_x = np.sin(x) cos_x = np.cos(x)mp.plot(x, sin_x, linestyle=':', alpha = 0.8,linewidth= 2, color='dodgerblue')mp.plot(x, cos_x, linestyle='-.', alpha = 0.8,linewidth= 2, color='orangered')mp.xticks([-np.pi, 0, np.pi],['-π', '0', 'π'])mp.show()

圖像:

舉個例子2(Latex排版語法字符串)

代碼:

import numpy as np import matplotlib.pyplot as mpx = np.linspace(-np.pi, np.pi, 1000) sin_x = np.sin(x) cos_x = np.cos(x)mp.plot(x, sin_x, linestyle=':', alpha = 0.8,linewidth= 2, color='dodgerblue')mp.plot(x, cos_x, linestyle='-.', alpha = 0.8,linewidth= 2, color='orangered')mp.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi],[r'$-\pi$', r'$-\frac{\pi}{2}$', '0',r'$\frac{\pi}{2}$', r'$\pi$']) mp.yticks([-1.0, -0.5, 0, 0.5, 1])mp.show()

圖像:

設(shè)置坐標軸

  • 語法
# 獲取當前坐標軸字典,{'left':左軸,'right':右軸,'bottom':下軸,'top':上軸 } ax = mp.gca()# 獲取其中某個坐標軸 axis = ax.spines['坐標軸名'] #坐標軸名:left/right/bottom/top# 設(shè)置坐標軸的位置。 該方法需要傳入2個元素的元組作為參數(shù) axis.set_position((type, val)) # type: <str> 移動坐標軸的參照類型 一般設(shè)置為'data' (以數(shù)據(jù)的值作為移動參照值) # val: 參照值# 設(shè)置坐標軸的顏色 axis.set_color(color) # color: <str> 顏色值字符串 #若需要隱藏掉坐標軸,則可設(shè)置為color參數(shù)為'none'
  • 舉個例子

代碼:

import numpy as np import matplotlib.pyplot as mpx = np.linspace(-np.pi, np.pi, 1000) sin_x = np.sin(x) cos_x = np.cos(x)mp.plot(x, sin_x, linestyle=':', alpha = 0.8,linewidth= 2, color='dodgerblue')mp.plot(x, cos_x, linestyle='-.', alpha = 0.8,linewidth= 2, color='orangered')# 設(shè)置坐標軸 ax = mp.gca() ax.spines['top'].set_color('none') ax.spines['right'].set_color('none') ax.spines['left'].set_position(('data', 0)) ax.spines['bottom'].set_position(('data', 0))mp.show()

圖像:

圖例

  • 語法
mp.legend(loc = 0)

位置(loc)標識:

  • 舉個例子

代碼:

import numpy as np import matplotlib.pyplot as mpx = np.linspace(-np.pi, np.pi, 1000) sin_x = np.sin(x) cos_x = np.cos(x)mp.plot(x, sin_x, linestyle=':', alpha = 0.8,linewidth= 2, color='dodgerblue', label = r'sin(x)')mp.plot(x, cos_x, linestyle='-.', alpha = 0.8,linewidth= 2, color='orangered',label = r'cos(x)')mp.legend(loc = 2)mp.show()

圖像:

特殊點

  • 語法
# xarray: <序列> 所有需要標注點的水平坐標組成的序列 # yarray: <序列> 所有需要標注點的垂直坐標組成的序列 mp.scatter(xarray, yarray, marker='', #點型 ~ matplotlib.markerss='', #大小edgecolor='', #邊緣色facecolor='', #填充色zorder=3) #繪制圖層編號 (編號越大,圖層越靠上,就會把圖層較小的圖層覆蓋掉)

點型圖:

  • 舉個例子

代碼(只貼繪制特殊點的代碼):

# 繪制特殊點 px = [3 / 4 * np.pi, 3 / 4 * np.pi] py = [np.sin(px[0]), np.cos(px[1])] mp.scatter(px, py, marker='o', color='red',s=70, label='Points', zorder=3)

圖像:

備注

  • 語法
# 在圖表中為某個點添加備注。包含備注文本,備注箭頭等圖像的設(shè)置。 mp.annotate(r'$\frac{\pi}{2}$', #備注中顯示的文本內(nèi)容xycoords='data', #備注目標點所使用的坐標系(data表示數(shù)據(jù)坐標系)xy=(x, y), #備注目標點的坐標textcoords='offset points', #備注文本所使用的坐標系(offset points表示參照點的偏移坐標系)xytext=(x, y), #備注文本的坐標fontsize=14, #備注文本的字體大小arrowprops=dict() #使用字典定義文本指向目標點的箭頭樣式 )

arrowprops參數(shù)使用字典定義指向目標點的箭頭樣式:

#arrowprops字典參數(shù)的常用key arrowprops=dict(arrowstyle='', #定義箭頭樣式connectionstyle='' #定義連接線的樣式 )

箭頭樣式(arrowstyle)字符串如下:

'-'None
'->'head_length=0.4,head_width=0.2
'-['widthB=1.0,lengthB=0.2,angleB=None
'|-|'widthA=1.0,widthB=1.0
'-|>'head_length=0.4,head_width=0.2
'<-'head_length=0.4,head_width=0.2
'<->'head_length=0.4,head_width=0.2
'<|-'head_length=0.4,head_width=0.2
'<|-|>'head_length=0.4,head_width=0.2
'fancy'head_length=0.4,head_width=0.4,tail_width=0.4
'simple'head_length=0.5,head_width=0.5,tail_width=0.2
'wedge'tail_width=0.3,shrink_factor=0.5

連接線樣式(connectionstyle)字符串如下:

‘a(chǎn)ngle’angleA=90,angleB=0,rad=0.0
‘a(chǎn)ngle3’angleA=90,angleB=0`
‘a(chǎn)rc’angleA=0,angleB=0,armA=None,armB=None,rad=0.0
‘a(chǎn)rc3’rad=0.0
‘bar’armA=0.0,armB=0.0,fraction=0.3,angle=None
  • 舉個例子

代碼(只貼備注部分的代碼):

mp.annotate(r'$[\frac{3\pi}{4}, cos(\frac{3\pi}{4})]$',xycoords='data',xy=(3/4 * np.pi, np.cos(px[1])),textcoords='offset points',xytext=(-80, -30),fontsize=14,arrowprops=dict(arrowstyle='-|>',connectionstyle='angle3'))

圖像:


總結(jié)

以上是生活随笔為你收集整理的Matplotlib基础(part1)--基本绘图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。