matplotlib 是 python 最著名的繪圖庫,它提供了一整套和 matlab 類似的命令 API,十分適合交互式進行繪圖。html
它的文檔至關完備,而且 Gallery 頁面 中有上百幅縮略圖,打開以後都有源程序。所以若是你須要繪製某種類型的圖,只須要在這個頁面中瀏覽/複製/粘貼一下,基本上都能搞定。python
這是要實現的效果圖,利用 Matplotlib 繪製函數 y = x^2^ 的圖像。git
import matplotlib.pyplot as plt
import numpy as np
# 定義 x 變量的範圍 (-3,3) 數量 50
x=np.linspace(-3,3,50)
y=x**2
# Figure 並指定大小
plt.figure(num=3,figsize=(8,5))
# 繪製 y=x^2 的圖像,設置 color 爲 red,線寬度是 1,線的樣式是 --
plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
# 設置 x,y 軸的範圍以及 label 標註
plt.xlim(-1,2)
plt.ylim(-2,3)
plt.xlabel('x')
plt.ylabel('y')
# 設置座標軸刻度線
# Tick X 範圍 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度數量 5 個
new_ticks=np.linspace(-1,2,5)
plt.xticks(new_ticks)
# Tick Y 範圍(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 別名(下面的英文)
plt.yticks([-2.2,-1,1,1.5,2.4],
[r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
# 設置座標軸 gca() 獲取座標軸信息
ax=plt.gca()
# 使用.spines設置邊框:x軸;將右邊顏色設置爲 none。
# 使用.set_position設置邊框位置:y=0的位置;(位置全部屬性:outward,axes,data)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 移動座標軸
# 將 bottom 便是 x 座標軸設置到 y=0 的位置。
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
# 將 left 便是 y 座標軸設置到 x=0 的位置。
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
# 設置標籤
ax.set_title('y = x^2',fontsize=14,color='r')
# 顯示圖像
plt.show()
複製代碼
首先一幅 Matplotlib 的圖像組成部分介紹。github
在 matplotlib 中,整個圖像爲一個 Figure 對象。在 Figure 對象中能夠包含一個或者多個 Axes 對象。每一個 Axes(ax) 對象都是一個擁有本身座標系統的繪圖區域。算法
所屬關係以下(圖片來自網絡):編程
圖上:Title 爲圖像標題,Axis 爲座標軸, Label 爲座標軸標註,Tick 爲刻度線,Tick Label 爲刻度註釋。bash
各個對象關係能夠梳理成如下內容(圖片來自網絡):網絡
注意框架
這裏不講解 matplotlib 的安裝,我使用的是 Anaconda 的 notebook,所以,能夠直接導入 matplotlib 的module,想要安裝 Anaconda 的請查看的寫的另外一篇文章。機器學習
若是說不想使用 Anaconda,能夠看看這篇推薦文章,教你如何安裝 matplotlib(視頻和文章教程)— 莫煩 Python -- Matplotlib
上面雖然貼了所有的代碼,有 matplotlib 基礎的人一看便懂,可是對於初學者來講,就比較抓腦了。
使用 import
導入模塊 matplotlib.pyplot
,並簡寫成 plt
使用 import
導入模塊 numpy
,並簡寫成 np
。
#導入 module
import matplotlib.pyplot as plt
import numpy as np
複製代碼
使用 np.linspace
定義 x:範圍是 (-3,3),個數是50,仿真一維數據組 (x
,y
) 表示曲線。
# 定義 x 變量的範圍 (-3,3) 數量 50
x=np.linspace(-3,3,50)
y=x**2
複製代碼
使用 plt.figure
定義一個圖像窗口,使用 plt.plot
畫 (x
,y
) 曲線,使用 plt.show
顯示圖像。
#繪製及顯示
plt.figure()
plt.plot(x, y)
plt.show()
複製代碼
最終代碼
import matplotlib.pyplot as plt
import numpy as np
# 定義 x 變量的範圍 (-3,3) 數量 50
x=np.linspace(-3,3,50)
y=x**2
plt.figure()
plt.plot(x, y)
plt.show()
複製代碼
運行結果
看到這個,是否是和最終效果圖差距很大,不要緊,咱們接着往下看。
使用 plt.figure
定義一個圖像窗口:編號爲 3,大小爲 (8, 5)。使用plt.plot
畫(x
,y
)曲線,曲線的顏色屬性(color
)爲紅色。曲線的寬度(linewidth
)爲1.0。曲線的類型(linestyle
)爲虛線, 使用plt.show
顯示圖像。
plt.figure(num=3,figsize=(8,5))
plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
複製代碼
最終代碼
import matplotlib.pyplot as plt
import numpy as np
# 定義 x 變量的範圍 (-3,3) 數量 50
x=np.linspace(-3,3,50)
y=x**2
# Figure 並指定大小
plt.figure(num=3,figsize=(8,5))
# 繪製 y=x^2 的圖像,設置 color 爲 red,線寬度是 1,線的樣式是 --
plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
plt.show()
複製代碼
運行效果
使用 plt.xlim
設置x座標軸範圍:(-1, 2); 使用 plt.ylim
設置 y 座標軸範圍:(-2, 3);
使用 plt.xlabel
設置 x 座標軸名稱:’x’; 使用 plt.ylabel
設置 y 座標軸名稱:’I am y’;
代碼實現
import matplotlib.pyplot as plt
import numpy as np
# 定義 x 變量的範圍 (-3,3) 數量 50
x=np.linspace(-3,3,50)
y=x**2
# Figure 並指定大小
plt.figure(num=3,figsize=(8,5))
# 繪製 y=x^2 的圖像,設置 color 爲 red,線寬度是 1,線的樣式是 --
plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
# 設置 x,y 軸的範圍以及 label 標註
plt.xlim(-1,2)
plt.ylim(-2,3)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
複製代碼
運行結果
設置 x 軸 使用 np.linspace
定義範圍以及個數:範圍是(-1,2); 個數是 5。
使用 plt.xticks
設置 x 軸刻度:範圍是(-1,2); 個數是5。
設置 y 軸 使用 plt.yticks
設置 y 軸刻度以及名稱:刻度爲 [-2, -1.8, -1, 1.22, 3];對應刻度的名稱爲 [‘really bad’,’bad’,’normal’,’good’, ‘really good’]。
# 設置座標軸刻度線
# Tick X 範圍 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度數量 5 個
new_ticks=np.linspace(-1,2,5)
plt.xticks(new_ticks)
# Tick Y 範圍(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 別名(下面的英文)
plt.yticks([-2.2,-1,1,1.5,2.4],
[r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
複製代碼
最終代碼
import matplotlib.pyplot as plt
import numpy as np
# 定義 x 變量的範圍 (-3,3) 數量 50
x=np.linspace(-3,3,50)
y=x**2
# Figure 並指定大小
plt.figure(num=3,figsize=(8,5))
# 繪製 y=x^2 的圖像,設置 color 爲 red,線寬度是 1,線的樣式是 --
plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
# 設置 x,y 軸的範圍以及 label 標註
plt.xlim(-1,2)
plt.ylim(-2,3)
plt.xlabel('x')
plt.ylabel('y')
# 設置座標軸刻度線
# Tick X 範圍 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度數量 5 個
new_ticks=np.linspace(-1,2,5)
plt.xticks(new_ticks)
# Tick Y 範圍(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 別名(下面的英文)
plt.yticks([-2.2,-1,1,1.5,2.4],
[r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
# 顯示圖像
plt.show()
複製代碼
運行效果,注意看 x, y 軸刻度以及標註變化
隱藏右邊框和上邊框
使用 plt.gca
獲取當前座標軸信息。
使用 .spines
設置邊框:右側邊框;使用.set_color
設置邊框顏色:默認白色;
使用 .spines
設置邊框:上邊框;使用.set_color
設置邊框顏色:默認白色;
調整座標軸至中心(將 left 邊框調整到 x=0 處,將 bottom 邊框調整到 y=0 處)
.xaxis.set_ticks_position
設置 x 座標刻度數字或名稱的位置:bottom
。(全部位置:top
,bottom
,both
,default
,none
)。.spines
設置邊框:x 軸;使用 .set_position
設置邊框位置:y=0 的位置;(位置全部屬性:outward
,axes
,data
)# 設置座標軸 gca() 獲取座標軸信息
ax=plt.gca()
# 使用.spines設置邊框:x軸;將右邊顏色設置爲 none。
# 使用.set_position設置邊框位置:y=0的位置;(位置全部屬性:outward,axes,data)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 移動座標軸
# 將 bottom 便是 x 座標軸設置到 y=0 的位置。
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
# 將 left 便是 y 座標軸設置到 x=0 的位置。
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
複製代碼
最終代碼
import matplotlib.pyplot as plt
import numpy as np
# 定義 x 變量的範圍 (-3,3) 數量 50
x=np.linspace(-3,3,50)
y=x**2
# Figure 並指定大小
plt.figure(num=3,figsize=(8,5))
# 繪製 y=x^2 的圖像,設置 color 爲 red,線寬度是 1,線的樣式是 --
plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
# 設置 x,y 軸的範圍以及 label 標註
plt.xlim(-1,2)
plt.ylim(-2,3)
plt.xlabel('x')
plt.ylabel('y')
# 設置座標軸刻度線
# Tick X 範圍 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度數量 5 個
new_ticks=np.linspace(-1,2,5)
plt.xticks(new_ticks)
# Tick Y 範圍(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 別名(下面的英文)
plt.yticks([-2.2,-1,1,1.5,2.4],
[r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
# 設置座標軸 gca() 獲取座標軸信息
ax=plt.gca()
# 使用.spines設置邊框:x軸;將右邊顏色設置爲 none。
# 使用.set_position設置邊框位置:y=0的位置;(位置全部屬性:outward,axes,data)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 移動座標軸
# 將 bottom 便是 x 座標軸設置到 y=0 的位置。
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
# 將 left 便是 y 座標軸設置到 x=0 的位置。
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
# 顯示圖像
plt.show()
複製代碼
運行結果
使用 .set_title 設置標題,聲明標題爲 y = x^2^,字體大小 14,顏色爲 red。
# 設置標籤
ax.set_title('y = x^2',fontsize=14,color='r')
複製代碼
最終代碼
import matplotlib.pyplot as plt
import numpy as np
# 定義 x 變量的範圍 (-3,3) 數量 50
x=np.linspace(-3,3,50)
y=x**2
# Figure 並指定大小
plt.figure(num=3,figsize=(8,5))
# 繪製 y=x^2 的圖像,設置 color 爲 red,線寬度是 1,線的樣式是 --
plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
# 設置 x,y 軸的範圍以及 label 標註
plt.xlim(-1,2)
plt.ylim(-2,3)
plt.xlabel('x')
plt.ylabel('y')
# 設置座標軸刻度線
# Tick X 範圍 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度數量 5 個
new_ticks=np.linspace(-1,2,5)
plt.xticks(new_ticks)
# Tick Y 範圍(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 別名(下面的英文)
plt.yticks([-2.2,-1,1,1.5,2.4],
[r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
# 設置座標軸 gca() 獲取座標軸信息
ax=plt.gca()
# 使用.spines設置邊框:x軸;將右邊顏色設置爲 none。
# 使用.set_position設置邊框位置:y=0的位置;(位置全部屬性:outward,axes,data)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 移動座標軸
# 將 bottom 便是 x 座標軸設置到 y=0 的位置。
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
# 將 left 便是 y 座標軸設置到 x=0 的位置。
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
# 設置標籤
ax.set_title('y = x^2',fontsize=14,color='r')
# 顯示圖像
plt.show()
複製代碼
運行結果
最後,附上 matplotlib 總體結構圖(圖片來自網絡):
統計學習方法
最近正在研究機器學習中的算法和公式,朋友給我推薦了這本書,通過一番考察,總算是以爲這本書對得起讀者,也值得推薦。
李航,日本京都大學電氣工程系畢業,日本東京大學計算機科學博士。曾任職於日本 NEC 公司中央研究所,微軟亞洲研究院高級研究員及主任研究員,現任華爲諾亞方舟實驗室首席科學家。北京大學、南開大學、西安交通大學客座教授。研究方向包括信息檢索、天然語言處理、統計機器學習及數據挖掘。
豆瓣簡介
詳細介紹支持向量機、Boosting、最大熵、條件隨機場等十個統計學習方法。
思惟力:高效的系統思惟
王世民,深圳爾雅 CEO,YouCore 創始人,知乎專欄「框架的力量」做者。
一個矛盾體。內心挺鄙視學歷,但不當心念了名校、拿了碩士;崇尚我的自由,但又創辦公司綁死了本身;特不喜歡教書,但如今幹着培訓。一個不安分的人。短短十來年,當過苦逼的IT碼農、作過裝逼的諮詢顧問、如今幹着土鱉的民企老闆。
這本書對個人思惟能力提高幫助蠻大的,書中提供的不少學習方法都值得借鑑,自從閱讀了本書之後,我也喜歡畫腦圖總結,不斷嘗試系統學習。我強烈建議讀者們去看看【框架的力量】的專欄,對提升你的思惟和學習效率頗有幫助。
豆瓣簡介
「真正有用」正是這本書不一樣於其它思惟書籍之處!
你有沒有遇到過如下窘境——分析時想不明白、表達時說不清楚、學習時學不快速?你想不想全面提高你的思惟能力?你知道問題解決技巧和表達技巧有哪些嗎?
此書中有你想知道的答案。
本書分爲 3 個部分共 10 章,各章可自成體系地解決一個問題,同時整書又造成一套體系化的系統思惟。
第一部分探祕了「框架」力量的根源。萬事萬物的本質實際上是一個個的系統,而掌握了系統的「框架」也就把握了事物的本質。沒有什麼問題是不能利用框架解決的,若是一個不行,那就兩個。
第二部分將運用「框架」解決問題分解爲五個步驟——界定問題、構建框架、明晰關鍵、高效執行及檢查調整,並精煉了相應的優秀思考方法和工具。此外,還傳授了在有限時間、有限資源限制下高質量地解決問題的祕訣——「假設思考」。
第三部分傳授如何運用「框架」有效表達。逐層遞進地演示了自上而下表達的魅力,並用豐富的圖表闡述了何爲「形象化表達」。
對於想全面提高思惟能力的讀者,建議按照本書章節順序閱讀;對於迫切想尋求具體問題解決技巧或表達技巧的讀者,也能夠直接閱讀相應章節。
想要書籍的請在後臺留言【180803】獲取這兩本書的 PDF 版,【思惟力:高效的系統思惟】附視頻教程,但願在學習的道路上,咱們能少走彎路,我會盡可能推薦本身讀過的好書,但願讀者們能跟着我一塊兒多讀書,讀好書。