推薦學習:
在使用Python進行資料視覺化程式設計中matplotlib庫是我們用來對資料進行畫圖常用的第三方庫。其中含有各類函數也就是不同型別的圖形,要使用matplotlib庫中的函數就需要了解函數所需要資料的格式,這也是我們學習matplotlib庫的重點。
直接使用plot()函數畫圖,是對於一般的簡單資料。我們可以採用直接呼叫plot()函數對列表資料進行直接畫圖。初期學習直接使用plot()函數能便於我們對後面圖學習奠定函數的引數及基礎。
matplotlib圖的組成:
直接是用plot()函數畫圖如法如下:
plt.plot(x, y, fmt='xxx', linestyle=, marker=, color=, linewidth=, markersize=, label=, )
其中x,y代表橫縱座標,fmt = '#color#linestyle#marker'即代表各類引數。
(1)linestyle:此欄位是線的樣式,引數形式:字串
linestyle引數 | 線形 |
'-' | 實線 |
'--' | 虛線 |
'-.' | 點劃線 |
':' | 點虛線 |
' ' | 無線 |
(2)linewidth:此引數是線的粗細,粗細程度和所定數值大小有關,引數形式:數值
(3)marker:點的樣式,字串
marker | 標記點 |
'.' | 店 |
',' | 畫素 |
'^' 'v' '>' '<' | 上下左右三角形 |
'1' '2' '3' '4' | 上下左右三叉線 |
'o' | 圓形 |
's' 'D' | 方形 |
'p' | 五邊形 |
'h' 'H' | 六邊形 |
'*' | 五角星 |
'+' 'x' | 十字交叉 |
'_' | 橫線 |
' | ' |
(4)markersize:點的大小,引數形式:數值
(5)color:調節線條還有點的顏色 ,字串,引數形式字串
字串 | color |
'r' | 紅 |
'g' | 綠 |
'b' | 藍 |
'y' | 黃 |
'c' | 青 |
'm' | 品 |
'k' | 黑 |
'w' | 白 |
此處顏色引數還可以有二進位制,十進位制等表示方法,同時對於顏色,RGB是三原色
(6)label:圖例,legend文字
使用plot()函數時需要匯入對應的庫,匯入庫後我們在未有資料的情況下直接畫圖,直接畫圖會隱式建立Figure,Axes物件。
import matplotlib.pyplot as plt plt.plot()
下面通過構造資料繪製簡單圖形
首先資料構造,設定引數,引數也可以在將資料填入plot()函數的時候設定。
# 匯入包 import matplotlib.pyplot as plt import numpy as np # 構造資料 # 位置 (2維:x,y一一對應) x = np.linspace(0, 2 * np.pi, 200) # 從0到2pi的200個值 y = np.sin(x) # 從sin(0)到sin(2pi)的200個值 # 顏色(0維) c = 'red' c = 'r' c = '#FF0000' # 大小(0維): 線寬 lw = 1
畫出圖形
# 生成一個Figure畫布和一個Axes座標系 fig, ax = plt.subplots() # 在生成的座標系下畫折線圖 ax.plot(x, y, c, linewidth=lw) # 顯示圖形 plt.show()
圖形展示:
給定兩組資料,建立y與x的關係試,使用plot函數進行畫圖,本次畫圖線條選用點虛線形式,粗細選用1,點選用方形,點大小選用值為10,圖例為‘1234’
import matplotlib.pyplot as plt x = [1,2,3] y = [1,2,3] y = x plt.plot(x,y,linestyle=':', linewidth=1, marker='d', markersize=10, label='1234') plt.legend()
作出圖片如下;
下面我們參照numpy的linspace函數生建立均勻分佈序列,然後對x,y建立數值關係,由此來建立圖畫。
import matplotlib.pyplot as plt import numpy as np x = np.linspace(-100,100,10) y = x**2 + 2*x +1 plt.plot(x,y,'g-.o')
作出如下圖案,由此可見,我們對於圖形的設定方面,在我們熟練以後如果沒有粗細的設定可以直接縮減再一個字串裡面
以上都是簡單圖形的講解,我們現在通過一個簡單的對資料DataFrame進行作圖,在往後的資料視覺化中我們需要對資料進行處理後再進行視覺化。下面我們通過正、餘弦函數進行作圖。
#匯入包 import matplotlib.pyplot as plt import numpy as np import pandas as pd #使用linspace()方法構成資料 x = np.linspace(0, 2 * np.pi, 50) # y1 = np.sin(x) y2 = np.cos(x) #轉化資料形式 df = pd.DataFrame([x,y1,y2]).T #對列重新命名 df.columns = ['x','sin(x)','cos(x)'] #資料寫入影象,命名圖例 plt.plot(df['x'],df['sin(x)'],label='sin(x)') plt.plot(df['x'],df['cos(x)'],label='cos(x)') plt.legend()
我們通過numpy的linspace方法生成資料再通過pandas對資料進行DataFrame化再帶入plot()函數,此處需要講的就是圖例的命名方法,通過在函數中寫入label引數,確定圖例的標籤,再通過legend()函數生成圖例,在後續的學習中也會講到圖例的位置、形式等的運用。
通過繪製世界人口變化曲線圖瞭解基本圖元引數設定,本次繪圖過程主要是先通過對人口資料匯入,瞭解資料構造,再進設定畫圖引數最後完成圖形的製作,其中基本的圖元引數用於別的圖形也適用,在這兒學會了我們只需要瞭解資料結構,構造成圖形所要的資料結構就可以就行畫出自己想要的圖形。
首先進行資料匯入,瞭解資料結構形式。為了學習方便,選用jupyter notebook進行視覺化圖形講解。
import pandas as pd datafile = r'world_population.txt' # 開啟檔案 df = pd.read_csv(datafile) #讀取資料 df.head()#展示前面部分資料
以下就是基本的資料樣式,由年份和人口數量組成
這裡做了基本的圖元設計,也就是對於畫布的設定,前面我們所學函數引數都是對於圖形中間的設定,我們構成一個視覺化介面是通過畫布+畫中圖形樣式組成一個完整的視覺化介面。
畫布介面有畫布大小,畫布畫素,畫布介面,畫布邊框等設定。
import matplotlib.pyplot as plt # 畫布 fig = plt.figure(figsize=(6,4), # inches dpi=120, # dot-per-inch facecolor='#BBBBBB', frameon=True, # 畫布邊框 ) plt.plot(df['year'],df['population']) # 標題 plt.title("1960-2009 World Population")
構成一個完整的視覺化影象除了圖例還有影象的標題,我們可以通過title()方法設定英文標題,中文標題要通過以下程式碼才能實現,因此我們如果是做中文專案在匯入包以後就可以寫上設定中文程式碼的程式碼串。
# 設定中文字型 plt.rcParams['font.sans-serif'] = 'SimHei' # 設定字型為簡黑(SimHei) plt.rcParams['font.sans-serif'] = 'FangSong' # 設定字型為仿宋(FangSong)
當然,除了這種比較簡單的圖形之外我們還能對圖形進行優化設定,將資料顯示的更加的精美和美觀,對圖形優化便於實際報告中的演示也是我們現在必不可少的的一環。
import matplotlib.pyplot as plt # 設定中文字型 plt.rcParams['axes.unicode_minus'] = False # 不使用中文減號 plt.rcParams['font.sans-serif'] = 'FangSong' # 設定字型為仿宋(FangSong) # 畫布 fig = plt.figure(figsize=(6,4), # inches dpi=120, # dot-per-inch facecolor='#BBBBBB', frameon=True, # 畫布邊框 ) plt.plot(df['year'],df['population'],'b:o',label='人口數') # 中文標題 plt.title("1960-2009 世界人口") # 字型字典 font_dict=dict(fontsize=8, color='k', family='SimHei', weight='light', style='italic', ) # X軸標籤 plt.xlabel("年份", loc='center', fontdict=font_dict) # loc: 左中右 left center right # Y軸標籤 plt.ylabel("人口數",loc='top', fontdict=font_dict) # loc: 上中下 top center bottom # X軸範圍 plt.xlim((2000,2010)) # X軸的起點和終點 # Y軸範圍 plt.ylim(6e9,7e9) # Y軸的起點和終點 # X軸刻度 plt.xticks(np.arange(2000,2011)) # X軸刻度 plt.yticks(np.arange(6e9,7e9+1e8,1e8)) # 圖例 plt.legend() # plt.legend(labels=['人口']) # 格線 plt.grid(axis='y') # axis: 'both','x','y'
上述程式碼,對x軸,y軸的刻度、標籤、字型進行定義,對圖例、格線等也做出了引數的設定,最後做出的圖形如下圖:
推薦學習:
以上就是手把手教你在Python使用plot()函數畫圖的詳細內容,更多請關注TW511.COM其它相關文章!