Python matplotlib 庫(kù)學(xué)習(xí)

matplotlib 學(xué)習(xí)

Matplotlib是一個(gè)Python 2D繪圖庫(kù),可以生成各種硬拷貝格式和跨平臺(tái)交互式環(huán)境的出版物質(zhì)量數(shù)據(jù)呼渣。Matplotlib可用于Python腳本擂橘,Python和IPython shell晌区,Jupyter筆記本,Web應(yīng)用程序服務(wù)器和四個(gè)圖形用戶界面工具包贝室。
matplotlib是最流行的用于數(shù)據(jù)可視化和分析工具之一契讲,它是一個(gè)數(shù)學(xué)繪圖庫(kù),可以用它來(lái)制作簡(jiǎn)單的圖表滑频,生成繪圖捡偏,直方圖,功率譜峡迷,條形圖银伟,誤差圖,散點(diǎn)圖等绘搞。

安裝 matplotlib

  1. linux 下安裝
sudo apt-get install python3-matplotlib
  1. windows 下安裝
    windows 下安裝比較麻煩彤避, 參考鏈接 windows下python安裝matplotlib庫(kù)

測(cè)試 matplotlib

測(cè)試方法就是啟動(dòng)終端, 運(yùn)行python夯辖, 看是否可以導(dǎo)入matplotlib庫(kù)琉预, 不報(bào)錯(cuò)就是安裝正常

$python
>>> import matplotlib
>>>

使用 matplotlib

繪制簡(jiǎn)單的折線圖

    # 導(dǎo)入庫(kù)
    import matplotlib.pyplot as plt 

    input_values = [1, 2, 3, 4, 5, 6]
    squares = [1, 4, 9, 16, 25, 36]
    # 調(diào)用plot函數(shù)繪制圖形
    plt.plot(input_values, squares, linewidth=5)

    # 設(shè)置圖表的標(biāo)題, 并給坐標(biāo)軸加上標(biāo)簽
    plt.title("Square Numbers", fontsize=16)
    plt.xlabel("value", fontsize=14)
    plt.ylabel("Square of value", fontsize=14)
    # 設(shè)置刻度標(biāo)記的大小
    plt.tick_params(axis='both', labelsize=14)

    # 顯示圖形
    plt.show()

例子函數(shù)方法說(shuō)明

  1. plt.plot(input_values, squares, linewidth=5) 函數(shù)
    這個(gè)函數(shù)根據(jù)給出的數(shù)字繪制有意義的圖形蒿褂, input_values表示的是輸入的值圆米,squares數(shù)是需要繪制圖形的數(shù)字也就是輸出值, 都是以列表的方式傳入啄栓, 接著可以使用 linewidth 指定線條的粗細(xì)

  2. plt.title() 函數(shù)
    這個(gè)函數(shù)用于指定圖形的標(biāo)題

  3. plt.xlabel() 函數(shù)
    這個(gè)函數(shù)用于指定x軸的標(biāo)簽名娄帖, 可用 fontsize=數(shù)值 的形式指定字體的大小

  4. plt.ylabel() 函數(shù)
    這個(gè)函數(shù)用于指定y軸的標(biāo)簽名, 可用 fontsize=數(shù)值 的形式指定字體的大小

  5. plt.tick_params(axis='both'昙楚,fontsize=14) 函數(shù)
    這個(gè)函數(shù)可以設(shè)置刻度的樣式近速, 其中 axis='both' 將影響x軸和y軸的刻度

  6. plt.show() 函數(shù)
    這個(gè)函數(shù)打開(kāi)matplotlib查看器,顯示繪制的圖形堪旧。

繪制簡(jiǎn)單的散點(diǎn)圖

# 導(dǎo)入庫(kù)
import matplotlib.pyplot as plt 

x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]

# plt.scatter(x_values, y_values, c='red', edgecolors='none' ,s=40)
# plt.scatter(x_values, y_values, c=(0, 0, 0.8), edgecolors='none' ,s=40)
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolors='none' ,s=40)

# 設(shè)置圖表的標(biāo)題削葱, 并給坐標(biāo)軸加上標(biāo)簽
plt.title("Square Numbers", fontsize=16)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of value", fontsize=14)
# 設(shè)置刻度標(biāo)記的大小
plt.tick_params(axis='both', which='major', labelsize=14)

plt.axis([0, 1100, 0, 1100000])
plt.show()
# plt.savefig('Squares_plot.png', bbox_inches='tight')

例子函數(shù)方法說(shuō)明

  1. plt.scatter((x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolors='none' ,s=40)) 函數(shù)
    用于繪制點(diǎn),接收兩個(gè)數(shù)值或者列表形式存儲(chǔ)的數(shù)值淳梦,分別為x坐標(biāo)和y坐標(biāo)佩耳;
    c參數(shù)用于指定顏色,這個(gè)顏色可以是顏色名(c='red')谭跨, 16進(jìn)制顏色碼(c='#336699')干厚, 或者是根據(jù)某個(gè)值來(lái)設(shè)置顏色(c='y_values',cmap=plt.cm.Blues)李滴,將顏色設(shè)置為y值列表,并使用參數(shù)cmap告訴Python使用哪個(gè)顏色映射蛮瞄,這些代碼將y值較小值的點(diǎn)顯示為淺藍(lán)色所坯, 將y值較大的點(diǎn)設(shè)置為深藍(lán)色;
    edgecolors='none'表示刪除數(shù)據(jù)點(diǎn)的輪廓挂捅;s參數(shù)表示每個(gè)點(diǎn)的大小

  2. plt.axis([0, 1100, 0, 1100000]) 函數(shù)
    axis函數(shù)接收一個(gè)列表芹助, 列表中存儲(chǔ)4個(gè)數(shù)值; 這4個(gè)值中前兩個(gè)指定x軸的最小值和最大值闲先, 后兩個(gè)值用于指定y軸的最小值和最大值

  3. plt.savefig('Squares_plot.png', bbox_inches='tight') 函數(shù)
    第一個(gè)實(shí)參指定要以什么樣的文件名保存圖表状土,這個(gè)文件將存儲(chǔ)到scatter_squares.py所在的目錄中;第二個(gè)實(shí)參指定將圖表多余的空白區(qū)域裁剪掉伺糠。如果要保留圖表周圍多余的空白區(qū)域蒙谓,可省略這個(gè)實(shí)參。

matpoltlib 呈現(xiàn)隨機(jī)漫步

隨機(jī)漫步:每次行走都完全是隨機(jī)的训桶,沒(méi)有明確的方向累驮,結(jié)果是由一系列隨機(jī)決策決定的。

from random import choice
import matplotlib.pyplot as plt

 
class RandomWwalk():
    """生成隨機(jī)漫步數(shù)據(jù)的類"""

    def __init__(self, num_points=5000):
        """初始化隨機(jī)漫步屬性"""
        self.num_points = num_points

        #所有隨機(jī)漫步都始于(0, 0)
        self.x_values = [0]
        self.y_values = [0]

    def fill_walk(self):
        """計(jì)算隨機(jī)漫步包含的所有點(diǎn)"""

        # 不斷漫步舵揭, 知道列表達(dá)到指定長(zhǎng)度
        while len(self.x_values) < self.num_points:
            # 決定前進(jìn)方向即沿這個(gè)方向前進(jìn)距離
            x_direction = choice([1, -1])
            x_distance = choice([1, 2, 3, 4])
            x_step = x_direction*x_distance

            y_direction = choice([1, -1])
            y_distance = choice([1, 2, 3, 4])
            y_step = y_direction*y_distance

            # 拒絕原地他踏步
            if x_step == 0 and y_step == 0:
                continue

            # 計(jì)算下一個(gè)點(diǎn)的x和y的值
            next_x = self.x_values[-1] + x_step
            next_y = self/y_values[-1] + y_step

            self.x_values.append(next_x)
            self.y_values.append(next_y)


while True:
    # 創(chuàng)建一個(gè)RandomWalk的實(shí)例谤专, 并將其包含的點(diǎn)都繪制出來(lái)
    rw = RandomWwalk()
    rw.fill_walk()   

    # 設(shè)置窗口的大小
    plt.figure(figsize=(10, 6))
    
    point_numbers = list(range(rw.num_points))
    plt.scatter(rw.x_values, rw.y_values, c=point_numbers,cmap=plt.cm.Blues, edgecolors='none', s=15)
    
    # 突出起點(diǎn)和終點(diǎn), 也就是重新繪制起點(diǎn)和終點(diǎn)的圖, 并賦予不同的大小和顏色
    plt.scatter(0, 0, c='green', edgecolors='none', s=100)
    plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100)

    # 隱藏坐標(biāo)軸
    plt.axes().get_xaxis().set_visible(False)
    plt.axes().get_yaxis().set_visible(False)

    plt.show()

    # 詢問(wèn)是否結(jié)束午绳, 如果輸入'n'將結(jié)束循環(huán)
    Keep_running = input("Make another walk? (y/n): ")
    if Keep_running == "n":
        break

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末置侍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拦焚,更是在濱河造成了極大的恐慌蜡坊,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耕漱,死亡現(xiàn)場(chǎng)離奇詭異算色,居然都是意外死亡抬伺,警方通過(guò)查閱死者的電腦和手機(jī)螟够,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)峡钓,“玉大人妓笙,你說(shuō)我怎么就攤上這事∧苎遥” “怎么了寞宫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拉鹃。 經(jīng)常有香客問(wèn)我辈赋,道長(zhǎng)鲫忍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任钥屈,我火速辦了婚禮悟民,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篷就。我一直安慰自己射亏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布竭业。 她就那樣靜靜地躺著智润,像睡著了一般。 火紅的嫁衣襯著肌膚如雪未辆。 梳的紋絲不亂的頭發(fā)上窟绷,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音鼎姐,去河邊找鬼钾麸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炕桨,可吹牛的內(nèi)容都是我干的饭尝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼献宫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钥平!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起姊途,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤涉瘾,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捷兰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體立叛,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年贡茅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秘蛇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顶考,死狀恐怖赁还,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情驹沿,我是刑警寧澤艘策,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站渊季,受9級(jí)特大地震影響朋蔫,放射性物質(zhì)發(fā)生泄漏罚渐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一驯妄、第九天 我趴在偏房一處隱蔽的房頂上張望搅轿。 院中可真熱鬧,春花似錦富玷、人聲如沸璧坟。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雀鹃。三九已至,卻和暖如春励两,著一層夾襖步出監(jiān)牢的瞬間黎茎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工当悔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留傅瞻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓盲憎,卻偏偏與公主長(zhǎng)得像嗅骄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饼疙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容