最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年05月03日 11:39:27   作者:Myths  
這篇文章主要給大家介紹了利用numpy+matplotlib繪圖的基本操作,文中介紹的非常詳細,對大家學(xué)習matplotlib繪圖具有一定的參考學(xué)習價值,需要的朋友們下面來一起學(xué)習學(xué)習吧。

簡述

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

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

安裝

$sudo apt-get install python-matplotlib
$sudo apt-get install python-numpy

使用

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

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

import numpy as np

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

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

第一個圖像

需要導(dǎo)入的包:

import numpy as np
from pylab import *

第一個函數(shù)圖像

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基礎(chǔ)的同學(xué)肯定不陌生。。。是的,這兩個模塊的組合幾乎就跟matlab的用法無二。。

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

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

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

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

      5、結(jié)果:

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

圖表布局和坐標分布

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

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

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

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

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

subplot(3,4,6)

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

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

xlim(-4.0,4.0)
ylim(-1.0,1.0)

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

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

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

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

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

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

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

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

更改色彩和線寬

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

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

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

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

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

參數(shù)樣式
‘-‘實線
‘–’虛線
‘-.’線-點
‘:’點虛線

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

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

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

markerfacecolor參數(shù)指定marker的顏色

markersize參數(shù)指定marker的大小

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

移動軸線

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

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))

我們知道一張圖有上下左右四個軸線,這里我們把右邊和上邊的軸線顏色調(diào)為透明,然后把下邊設(shè)置到y(tǒng)軸數(shù)據(jù)為0的地方,把左邊設(shè)置到x軸數(shù)據(jù)為0的地方。這樣我們就能根據(jù)自己想要位置來調(diào)節(jié)軸線了。

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

# -----------------------------------------------------------------------------
# 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()

顯示的結(jié)果就是:

圖例和注解

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

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屬性就好了,最后調(diào)用下legend函數(shù)來確定圖例的位置,一般就是’upper left’就好了。

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

# -----------------------------------------------------------------------------
# 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()

效果圖:

還是十分高能的。。。

總結(jié)

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

相關(guān)文章

  • 解決90%的常見問題的8個python NumPy函數(shù)

    解決90%的常見問題的8個python NumPy函數(shù)

    這篇文章主要為大家介紹了解決90%的常見問題的8個python NumPy函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • python從入門到實踐之字典

    python從入門到實踐之字典

    這篇文章主要為大家介紹了python字典,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 用Python實現(xiàn)流星雨效果的方法詳解

    用Python實現(xiàn)流星雨效果的方法詳解

    這篇文章主要為大家介紹了Python實現(xiàn)流星雨效果的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-12-12
  • 淺談Python 對象內(nèi)存占用

    淺談Python 對象內(nèi)存占用

    下面小編就為大家?guī)硪黄獪\談Python 對象內(nèi)存占用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • python神經(jīng)網(wǎng)絡(luò)Xception模型復(fù)現(xiàn)詳解

    python神經(jīng)網(wǎng)絡(luò)Xception模型復(fù)現(xiàn)詳解

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)Xception模型復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python使用pyecharts控件繪制圖表

    Python使用pyecharts控件繪制圖表

    這篇文章介紹了Python使用pyecharts控件繪制圖表的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • python Boltons庫實用功能探索(深度復(fù)制類型檢查重試機制)

    python Boltons庫實用功能探索(深度復(fù)制類型檢查重試機制)

    這篇文章主要為大家介紹了python Boltons庫實用功能探索包含深度復(fù)制類型檢查重試機制及數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python實現(xiàn)運行其他程序的四種方式實例分析

    Python實現(xiàn)運行其他程序的四種方式實例分析

    這篇文章主要介紹了Python實現(xiàn)運行其他程序的四種方式,結(jié)合實例形式分析了Python執(zhí)行其他程序相關(guān)模塊與函數(shù)使用技巧,需要的朋友可以參考下
    2017-08-08
  • python入門學(xué)習筆記分享

    python入門學(xué)習筆記分享

    這篇文章主要介紹了關(guān)于Python的一些總結(jié),希望自己以后在學(xué)習Python的過程中可以邊學(xué)習邊總結(jié),就自己之前的學(xué)習先做以總結(jié),之后將不斷總結(jié)更新
    2021-10-10
  • python原類、類的創(chuàng)建過程與方法詳解

    python原類、類的創(chuàng)建過程與方法詳解

    在本篇文章里小編給各位分享了關(guān)于python原類、類的創(chuàng)建過程與方法的相關(guān)知識點內(nèi)容,有興趣的朋友們跟著學(xué)習參考下。
    2019-07-07

最新評論

乐业县| 景宁| 灵丘县| 邻水| 罗山县| 手游| 曲阳县| 广灵县| 尉犁县| 隆德县| 嘉定区| 内丘县| 祁连县| 镇宁| 潼关县| 景宁| 蓬安县| 云霄县| 林口县| 英吉沙县| 城市| 静宁县| 彭阳县| 万安县| 张家口市| 南充市| 缙云县| 鲁甸县| 温州市| 嘉义县| 合作市| 托克托县| 赤水市| 高平市| 社旗县| 永寿县| 江源县| 安陆市| 镇坪县| 徐水县| 陈巴尔虎旗|