国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 利用numpy+matplotlib繪圖的基本操作教程

利用numpy+matplotlib繪圖的基本操作教程

2020-10-06 16:07Myths Python

這篇文章主要給大家介紹了利用numpy+matplotlib繪圖的基本操作,文中介紹的非常詳細,對大家學習matplotlib繪圖具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。

簡述

Matplotlib是一個基于python的2D畫圖庫,能夠用python腳本方便的畫出折線圖,直方圖,功率譜圖,散點圖等常用圖表,而且語法簡單。具體介紹見matplot官網。

Numpy(Numeric Python)是一個模仿matlab的對python數值運算進行的擴展,提供了許多高級的數值編程工具,如:矩陣數據類型、矢量處理,以及精密的運算庫。專為進行嚴格的數字處理而產生,而且據說自從他出現了以后,NASA就把很多原來用fortran和matlab做的工作交給了numpy來做了,可見其強大。。。他的官網在這里,具體的資料都在里面。

安裝

?
1
2
$sudo apt-get install python-matplotlib
$sudo apt-get install python-numpy

(牛力大法好~)

使用

matplotlib可以在腳本中使用,不過如果在ipython中使用則會更加炫(直接添加–pylab參數可以免去導包的過程),而且能得到類似Matlab/Mathematica一樣的功能,即時輸入,即時輸出。個人覺得說白了他就是模仿Matlab/Mathematica的,但是的確比前者更加方便編程。

很多情況下matplot需要配合numpy包一起用,關于numpy包我不打算分開來說,用到的時候提一下就行。有一點需要注意的是,numpy包通常是這樣導入的:

?
1
import numpy as np

會給他起一個叫np的別名,而且這幾乎已經是約定俗成了。

在python或者ipython中輸入help(*需要查找的函數*) 就行(當然需要先導入下包)。

第一個圖像

需要導入的包:

?
1
2
import numpy as np
from pylab import *

第一個函數圖像

?
1
2
3
4
5
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plot(X,C)
plot(X,S)
show()

有matlab基礎的同學肯定不陌生。。。是的,這兩個模塊的組合幾乎就跟matlab的用法無二。。

      1、首先用np.linspace方法生成一個數組X,這個數組是從$-\pi$開始到$\pi$的總共包含256個元素的數組,endpoint參數表示是否包含首尾端點(他的值是True或False,首字母要大寫。。。。)。當然,這個數組就是一個普通的數組了,跟其他數組沒有區別。

      2、然后用np.cos()np.sin()方法作用在X數組上,對于X中的每一個元素進行計算,生成結果數組。(免去了迭代的過程)。

      3、接著調用pylab的plot方法,第一個參數是橫坐標數組,第二個參數是縱坐標數組,其他參數暫且不談。這樣他會生成一個默認的圖表了。(不會立刻顯示)

      4、當然,最后還要調用show方法來顯示圖表。

      5、結果:

利用numpy+matplotlib繪圖的基本操作教程

圖表的名字叫figure1,左下面有幾個按鈕,都是很實用的東西,右下角會顯示當前鼠標左邊,也很方便。

圖表布局和坐標分布

每一個圖表都是在一個figure里面,我們可以通過如下命令生成一個空的figure:

?
1
figure(figsize=(8,6), dpi=80)

這里參數的順序沒有要求,但是一定要加上參數名,因為他是根據參數名來區別每個參數的,是一種跟C語言類型不同的函數。figsize參數表示figure的寬高比,然后dpi表示每一份占的長度,比如這里就表示圖像是640x480的。

輸出命令之后會立刻出現一個窗口,接下來所有的plot命令都會立刻顯示在這個窗口上而不用再輸入show命令了。

一個figure里也能顯示多個圖表,我們可以用如下函數來分割一個figure:

?
1
subplot(3,4,6)

這樣就會把當前的figure分割成3行4列的表,而激活其中的第6張,即第2行第3張。以后的plot都是在這一個子表上生成的,如果需要更換則可以重新輸入subplot命令來確定其新的位置。

除此之外,如果我們對圖表顯示的范圍不滿意,我們還可以直接調整圖表的坐標范圍:

?
1
2
xlim(-4.0,4.0)
ylim(-1.0,1.0)

這就表示x軸的范圍設置在-4到4,y軸的范圍設置在-1到1。當然,如果是想相對的進行修改我們可以利用下numpy數組的min和max方法。比如X.min() 這樣的東西。

如果對坐標顯示的密度啊什么的不滿意,我們也可以調節他的標注點:

?
1
2
xticks(np.linspace(-4,4,9,endpoint=True))
yticks(np.linspace(-1,1,5,endpoint=True))

對于xticks和yticks,我們實際上可以傳入任意的數組,這里不過是為了方便而用numpy快速生成的等差數列。

當然,我們也可以給標注點進行任意的命名,像下面這樣:

?
1
xticks([1,2,3,4,5],['one','two','three','four','five'])

效果也很好想象,就不貼圖了。需要注意的是這里也可以支持LaTex語法,將LaTex引用在兩個$之間就可以了。(關于LaTex)

這里也有個小竅門,就是如果想不顯示標注的話,我們就可以直接給xticks賦一個空的數組。

更改色彩和線寬

我們可以在畫plot的時候用如下方法指定他的顏色和線寬:

?
1
plot(X, C, color='#cadae3', linestyle='-',linewidth=1.3, marker='o', markerfacecolor='blue', markersize=12,)

同樣,這里參數的順序不重要,名字才重要。

color參數可以指定RGB的色相,也可以用一些默認的名字,比如red blue之類的。

linestyle參數則指定了線的樣式,具體參照以下樣式:

 

參數 樣式
‘-‘ 實線
‘–' 虛線
‘-.' 線-點
‘:' 點虛線

 

linewidth參數指定折線的寬度,是個浮點數。

marker參數指定散點的樣式,具體參照以下樣式:

 

參數 樣式
‘.' 實心點
‘o' 圓圈
‘,' 一個像素點
‘x' 叉號
‘+' 十字
‘*' 星號
‘^' ‘v' ‘<' ‘>' 三角形(上下左右)
‘1' ‘2' ‘3' ‘4' 三叉號(上下左右)

 

markerfacecolor參數指定marker的顏色

markersize參數指定marker的大小

這樣就基本上能夠自定義任何的折線圖、散點圖的樣式了。

移動軸線

這段有點小復雜,暫時不想具體了解奇奇怪怪的函數調用,姑且先記錄下用法和原理:

?
1
2
3
4
5
6
7
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

我們知道一張圖有上下左右四個軸線,這里我們把右邊和上邊的軸線顏色調為透明,然后把下邊設置到y軸數據為0的地方,把左邊設置到x軸數據為0的地方。這樣我們就能根據自己想要位置來調節軸線了。

比如下面這段官方的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# -----------------------------------------------------------------------------
# Copyright (c) 2015, Nicolas P. Rougier. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# -----------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(8,5), dpi=80)
ax = plt.subplot(111)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-")
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
 [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, 0, +1],
 [r'$-1$', r'$0$', r'$+1$'])
plt.show()

顯示的結果就是:

利用numpy+matplotlib繪圖的基本操作教程

圖例和注解

圖例十分簡單,下述代碼就可以解決:

?
1
2
3
plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")
legend(loc='upper left')

在plot里指定label屬性就好了,最后調用下legend函數來確定圖例的位置,一般就是'upper left'就好了。

注解就有點麻煩了,要用到annotate命令,挺復雜的,暫時是在不想看,姑且貼一段完整的代碼和效果圖吧:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -----------------------------------------------------------------------------
# Copyright (c) 2015, Nicolas P. Rougier. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# -----------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(8,5), dpi=80)
ax = plt.subplot(111)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
  [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, +1],
  [r'$-1$', r'$+1$'])
t = 2*np.pi/3
plt.plot([t,t],[0,np.cos(t)],
  color ='blue', linewidth=1.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color ='blue')
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
  xy=(t, np.sin(t)), xycoords='data',
  xytext=(+10, +30), textcoords='offset points', fontsize=16,
  arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.plot([t,t],[0,np.sin(t)],
  color ='red', linewidth=1.5, linestyle="--")
plt.scatter([t,],[np.sin(t),], 50, color ='red')
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
  xy=(t, np.cos(t)), xycoords='data',
  xytext=(-90, -50), textcoords='offset points', fontsize=16,
  arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.legend(loc='upper left', frameon=False)
plt.savefig("../figures/exercice_9.png",dpi=72)
plt.show()

效果圖:

利用numpy+matplotlib繪圖的基本操作教程

還是十分高能的。。。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者使用python能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://blog.mythsman.com/2016/01/23/2/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲久久久久 | 91久久综合亚洲鲁鲁五月天 | 黄色片在线免费观看 | 一级大片免费观看 | 欧美第8页| 久久中文字幕电影 | 天堂一区 | 中文字幕亚洲区 | 北条麻妃一区二区三区在线观看 | 日韩免费网站 | 性做久久久| 亚洲色吧 | 国产一区二区三区欧美 | 成人妇女免费播放久久久 | 亚洲一区 | 最近中文字幕mv免费高清在线 | 九九热精品视频在线观看 | 直接看av的网站 | 亚洲成人av在线 | 一a级毛片| 综合久久综合久久 | 精精国产 | 中文字幕一区二区三区日韩精品 | 久久久久久亚洲精品中文字幕 | 天天操人人干 | 午夜黄色影院 | www.888www看片 | 亚洲喷水 | 亚洲免费在线视频 | 日韩国产精品一区二区三区 | 中文成人在线 | 欧美一区二区黄色 | 国产日韩欧美在线 | 二区三区在线观看 | 91亚洲国产成人久久精品网站 | 欧美精品91 | 亚洲精品一区二区三区蜜桃久 | 日韩中文字幕电影 | 精品免费av | 福利成人 | 91视视频在线观看入口直接观看 |