matplotlib視覺化
阿新 • • 發佈:2018-12-19
matplotlib.pyplot ****************************************************************************************************************** 調整子圖的位置 預設情況下, matplotlib會在subplot外圍留下⼀定的邊距, 並在subplot之間留下⼀定的間距。 間距跟影象的⾼度和寬度有關, 因此, 如果你調整 了影象⼤⼩( 不管是程式設計還是⼿⼯) , 間距也會⾃動調整。 利⽤Figure的subplots_adjust⽅法可以輕⽽易舉地修改間距, 此外, 它也是個頂級函式: subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None) /***********預設值 wspace和hspace⽤於控制寬度和⾼度的百分⽐, 可以⽤作subplot之間的間距。 left = 0.125 # the left side of the subplots of the figure right = 0.9 # the right side of the subplots of the figure bottom = 0.1 # the bottom of the subplots of the figure top = 0.9 # the top of the subplots of the figure wspace = 0.2 # the amount of width reserved for space between subplots, # expressed as a fraction of the average axis width hspace = 0.2 # the amount of height reserved for space between subplots, # expressed as a fraction of the average axis height **************************/ plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.25, wspace=0.35) ************************************************************************************ (1)繪製一個圖 import matplotlib.pyplot as plt plt.figure(figsize=(10, 5)) # 設定影象顯示大小 plt.plot(x, y, color, linestyle, marker, markerstyle)# 繪製線狀圖 plt.plot()引數設定 Property Value Type alpha 控制透明度,0為完全透明,1為不透明 animated [True False] antialiased or aa [True False] clip_box a matplotlib.transform.Bbox instance clip_on [True False] clip_path a Path instance and a Transform instance, a Patch color or c 顏色設定 contains the hit testing function dash_capstyle [‘butt’ ‘round’ ‘projecting’] dash_joinstyle [‘miter’ ‘round’ ‘bevel’] dashes sequence of on/off ink in points data 資料(np.array xdata, np.array ydata) figure 畫板物件a matplotlib.figure.Figure instance label 圖示 linestyle or ls 線型風格[‘-’ ‘–’ ‘-.’ ‘:’ ‘steps’ …] linewidth or lw 寬度float value in points lod [True False] marker 資料點的設定[‘+’ ‘,’ ‘.’ ‘1’ ‘2’ ‘3’ ‘4’] markeredgecolor or mec any matplotlib color markeredgewidth or mew float value in points markerfacecolor or mfc any matplotlib color markersize or ms float markevery [ None integer (startind, stride) ] picker used in interactive line selection pickradius the line pick selection radius solid_capstyle [‘butt’ ‘round’ ‘projecting’] solid_joinstyle [‘miter’ ‘round’ ‘bevel’] transform a matplotlib.transforms.Transform instance visible [True False] xdata np.array ydata np.array zorder any number ********************************************************************************************************************** plt.hist(y, bins, density)# 繪製條形圖 : n, bins, patches = plt.hist(arr, bins=10, normed=0, facecolor='black', edgecolor='black',alpha=1,histtype='bar') hist的引數非常多,但常用的就這六個,只有第一個是必須的,後面四個可選 arr: 需要計算直方圖的一維陣列 bins: 直方圖的柱數,可選項,預設為10 normed: 是否將得到的直方圖向量歸一化。預設為0 facecolor: 直方圖顏色 edgecolor: 直方圖邊框顏色 alpha: 透明度 histtype: 直方圖型別,‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’ 返回值 : n: 直方圖向量,是否歸一化由引數normed設定 bins: 返回各個bin的區間範圍 patches: 返回每個bin裡面包含的資料,是一個list ************************************************************************************************************************ plt.grid() # 顯示網格 plt.bar(x, y, alpha)# 繪製柱狀圖,alpha指的是透明度 plt.scatter(x, y, marker='', markersize) # 繪製散點圖, marker可以是 scatter:x,y表示橫縱座標,color表示顏色:'r':紅 'b':藍色 等,marker:標記,edgecolors:標記邊框色'r'、'g'等,s:size大小 ********************************************************************************************************************* plt.pie(x, labels, autopct, explode) # 繪製餅狀圖************************ : pie(x, explode=None, labels=None, colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'), autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center = (0, 0), frame = False ) x (每一塊)的比例,如果sum(x) > 1會使用sum(x)歸一化 labels (每一塊)餅圖外側顯示的說明文字 explode (每一塊)離開中心距離 startangle 起始繪製角度,預設圖是從x軸正方向逆時針畫起,如設定=90則從y軸正方向畫起 shadow 是否陰影 labeldistance label繪製位置,相對於半徑的比例, 如<1則繪製在餅圖內側 autopct 控制餅圖內百分比設定,可以使用format字串或者format function '%1.1f'指小數點前後位數(沒有用空格補齊) pctdistance 類似於labeldistance,指定autopct的位置刻度 radius 控制餅圖半徑 返回值: 如果沒有設定autopct,返回(patches, texts) 如果設定autopct,返回(patches, texts, autotexts) patches -- list --matplotlib.patches.Wedge物件 texts autotexts -- matplotlib.text.Text物件 ........................................................................................................................ plt.title() # 標題 plt.text(x, y, '6666')# 插入文字 plt.xticks(list-like, rotation) # X軸的刻度, 旋轉度 plt.yticks(list-like) # y軸的刻度 plt.xlabel()# X軸的標籤 plt.ylabel()# y軸的標籤 plt.xlim() # 限制X軸的範圍 plt.ylim() # 限制y軸的範圍 plt.show() # 顯示 plt.savefig('path/img.png', dpi=300, bbox_inches='tight')# 儲存圖片 (2)繪製多個圖 fig = plt.figure(figsize=(10, 8))# 畫布大小 ax = fig.subplot(2, 3) # 繪製2行3列的圖 ax[0][0].plot() ax[0][0].set_xticklabels() # 設定X軸刻度標籤 ax[0][0].set_xlabel() # 設定X軸的標籤 ax[0][0].set_xlim() # 限制X軸的範圍 ax[0][0].set_grid() # 顯示網格 ax.set_xlim(1,4) # 設定x軸範圍 ax.set_ylim(-8.5,11) # 設定y軸範圍 ax.set_xticks(range(1,4.1,0.5)) # 設定x軸的標籤 ax.set_yticks(range(-8,11,2)) # 設定y軸的標籤 ax.set_xticklabels(list("abcdefg")) # 設定x軸的標籤文字 6.2 pandas的繪圖 pandas 的繪圖功能是以matplotlib為基礎的 import pandas as pd from pandas import DataFrame data = {'id':[1001,1002,1003,1004,1005,1006], 'date':pd.date_range('20130102', periods=6), 'city':['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '], 'age':[23,44,54,32,34,32], 'category':['100-A','100-B','110-A','110-C','210-A','130-F'], 'price':[1200,np.nan,2133,5433,np.nan,4432]} # print(pd.DataFrame(data)) df = DataFrame(data) df.plot(kind='line', xlim, ylim, grid) #繪製線狀圖 df.plot(kind='bar', stacked=True) #繪製柱狀圖 bar 豎直 barh 水平 S.hist(bins, density) # 繪製條形圖 S.plot(kind='ked')# 繪製核密度圖, 就是一個線狀圖