1. 程式人生 > >matplotlib畫圖(一)——線條圖

matplotlib畫圖(一)——線條圖

最近一直接觸大資料相關專案,也瞭解了一些基本的資料分析方法。於是乎,想要對資料做一些處理,形成圖示,讓資料會說話。
R語言與python語言在作圖上面都有一定優勢,本人不會R語言,只能學習python相關的作相簿了。根據網上的資料與反饋,matplotlib會是一個不錯的選擇。
從最基礎的作圖開始——線條圖。
matplotlib庫提供介面:

matplotlib.pyplot.plot(*args, **kwargs)

呼叫方法

plot([x], y, [fmt], data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

其中中括號的引數是可以省略的。來一個最簡單的呼叫方法吧:

>>> from matplotlib.pyplot import plot
>>> x1 = list(range(5))
>>> y1 = list(map(lambda x:x**2, x1))
>>> x1
[0, 1, 2, 3, 4]
>>> y1
[0, 1, 4, 9, 16]
>>> plot(x1,y1)
[<matplotlib.lines.Line2D object at 0x02A063F0>]

1
上述定義了一個指定x,y座標的線條圖。需注意的是,若指定了x,y的資料,那麼x與y的資料個數要一一對應,否則會報錯。根據文件提示,x軸資料其實是可以省略的,省略x軸資料後,會以預設座標調整:

>>> plot(y1)
[<matplotlib.lines.Line2D object at 0x075D8450>]

畫兩個線條圖

>>> x2 = list(range(5,10))
>>> y2 = list(map(lambda x: x**2, x2))
>>> x2
[5, 6, 7, 8, 9]
>>> y2
[25, 36, 49, 64, 81]
>>> plot(y1,y2)
[<matplotlib.lines.Line2D object at 0x079092D0>]

2
上述未指定座標,下面來指定下座標看看怎麼樣?

>>> plot(x1,y1,x2,y2)
[<matplotlib.lines.Line2D object at 0x089B30B0>, <matplotlib.lines.Line2D object at 0x089B3250>]

3
藍色線條圖為x1,y1的資料,橙色線條圖為x2,y2的資料。
有些時候,我們會對線條圖有一些更高的要求,這時候可以考慮下引數fmt
fmt其實是三個配置的引數:

fmt = '[color][marker][line]'

其中color有如下種類:
color
marker有如下種類:
marker
line有如下種類:
line
舉個例子吧,我需要上述藍色線條圖改成紅色實線圖,座標用“點”標記;橙色線條圖改成綠色虛線圖,座標用“*”號標記;根據文件可得:

>>> plot(x1,y1,"r.-",x2,y2,"g*--")
[<matplotlib.lines.Line2D object at 0x01556050>, <matplotlib.lines.Line2D object at 0x01556110>]

4
fmt引數雖然是三個配置項,實際使用過程中,可配置任意一項或者多項也都是可以的,並不要求三個配置項都要完整。
相信fmt已經能滿足大部分人的需求了,但或許高階人士不止於此,此介面還有很多屬性引數:
properties
上圖是最全面的線條圖引數相關的設定,若使用上述關鍵字設定時,與fmt引數衝突時,以關鍵字設定為主:

>>> plot(x1,y1,"r.-",x2,y2,"g*--", marker="D")
[<matplotlib.lines.Line2D object at 0x0792F030>, <matplotlib.lines.Line2D object at 0x0792F890>]

5
本博文參考matlibplot 官方文件:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot