1. 程式人生 > >python + matplotlib.pyplot圖形基本操作和部分精細化操作

python + matplotlib.pyplot圖形基本操作和部分精細化操作

第一步:顯示一張圖片

第二步:在同一座標下畫出兩條線(一些基本命令)

# /usr/bin/env python
# coding: utf-8
# 2018年06月01日21:53:46
# 學習python中matplotlib的筆記
# 參考網站1: http://cs231n.github.io/python-numpy-tutorial/#matplotlib
# 參考網站2: https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot
# matplotlib.pyplot類似於MATLAB中的畫圖命令plot

import matplotlib.pyplot as plt
import numpy as np

#==========================第一步:畫出圖形並顯示====================================#
# x = np.arange(0, 2*np.pi, 0.01)# 表示起點為0, 終點為2×pi, 步長為0.01的陣列
# # print(type(x))
# # print(x)
# y = np.sin(x)
# plt.plot(x, y)# 有這一行只是畫出了圖形,橫軸為x,縱軸為y。但是還無法顯示圖形
# plt.show()# 有了這個命令,圖形才能顯示


#============第二步:在同一座標軸下畫出兩條線並對圖形進行標註:圖例,標題,座標,=============#
# x1 = np.arange(0, 2*np.pi, 0.01)
# y1 = np.sin(x1)
# y2 = np.cos(x1)# 這兩個都是numpy的函式,呼叫就行,但是不要忘記加上np.
# plt.plot(x1, y1)
# plt.plot(x1, y2)
# plt.title("sin()&cos()")# 標題,用單引號或者雙引號都行
# plt.xlabel("x")# X軸的標籤
# plt.ylabel("y")# y軸的標籤
# plt.legend(["sin(x)","cos(x)"])# 寫出圖例,圖例內容與畫圖順序一致。
# # 注意到,這裡由於是兩個或者兩個以上的圖例,需要用中括號表示,否則會顯示出錯
# plt.show()#這個一定要最後顯示,如果在定義標題、座標軸標籤以及圖例之前,在其後註明的可能並不會顯示

# 也可以將兩個畫圖命令合為一個,程式碼也就更加簡單
# x1 = np.arange(0, 2*np.pi, 0.01)
# y1 = np.sin(x1)
# y2 = np.cos(x1)
# plt.plot(x1,y1, x1,y2)
# plt.show()


#=====================第三步:在一個視窗畫出多幅圖(subplot命令)========================#
# x1 = np.arange(0, 2*np.pi, 0.01)
# y1 = np.sin(x1)
# y2 = np.cos(x1)# 這兩個都是numpy的函式,呼叫就行,但是不要忘記加上np.
# plt.subplot(1,2,1)# subplot和MATLAB一樣,可以用來切分視窗,前兩個數字表示如何切分視窗
# # 這裡的1和2分別表示將一個視窗分成一行但有兩列的影象視窗,最後一個1表示啟用第一個視窗,在這個視窗下開始畫圖
# plt.plot(x1, y1)
# plt.xlabel("x")
# plt.ylabel("y")
# plt.title("sin(x)")
#
# plt.subplot(1,2,2)# 最後一個2表示啟用第二個視窗,在這個視窗下開始畫圖
# # 注意,如果是多行多列,一般從左到右,從上到下,視窗序號依次增加
# plt.plot(x1, y2)
# plt.xlabel("x")
# plt.ylabel("y")
# plt.title("cos(x)")
# plt.show()


#=====================第四步:圖形的高階標註:線寬,顏色,資料標記等==========================#
# 資料點上的標記稱為marker,有標記的顏色和標記的大小
# 資料點之間需要用線連線,這條線可以指定寬度(如果沒有線,則線寬不顯示)
# 資料點之間的線條屬性包括線寬,線型,線的顏色等
x1 = np.arange(0, 2*np.pi, 0.5)
# 注意,如果這裡資料點不能太密,否則在每個資料點上畫圖,會使得資料標記看不清,因為marker都重疊了
y1 = np.sin(x1)
y2 = np.cos(x1)
plt.plot(x1,y1,'r+-.',linewidth=1,markersize=12)
# 這裡,r表示red,+表示資料點的標記(marker)
# -.表示線型,linewidth指定線寬
# markersize表示標記的大小
plt.plot(x1,y2,'b*-',linewidth=3)
plt.title("sin(x) and cos(x)")
plt.xlabel("x")
plt.ylabel("y")
plt.legend(["sin(x)", "cos(x)"])
plt.show()

第三步:利用subplot命令在一個視窗下顯示兩幅圖

第四步:一副比較精細化操作的繪圖

注意:我們在利用matplotlib畫圖時,儘量使用第四步的方法,這樣得到的圖形更加漂亮

正所謂更自由,我們也需要為此付出一定的代價。