1. 程式人生 > >matplotlib視覺化

matplotlib視覺化

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')# 繪製核密度圖, 就是一個線狀圖