認識jupyter notebook 和 Matplotlib的基本用法

一城山水發表於2020-10-11

1、認識jupyter notebook

jupyter notebook:一款程式設計/文件/筆記/展示軟體,具有很好的互動性,大量減少了調式的時間,這裡暫不介紹 jupyter lab 。

啟動命令:jupyter notebook

在這裡插入圖片描述

具體安裝網上有教程 這裡不細說

想在MAC終端啟動並在後臺掛起請輸入

nohup jupyter notebook&

jobs :檢視當前有多少在後臺執行的命令

使用 jobs -l 可以顯示程式號 , kill -9 pid 可以終止執行的命令。

2、認識Matplotlib

matplotlib: 最流行的Python底層繪相簿,主要做資料視覺化圖表,名字取材於MATLAB,模仿MATLAB構建

在jupyter notebook上執行matplotlib ,請輸出下面語句以順利解決中文亂碼

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']      # windos 下解決中文亂碼的方法
plt.rcParams['font.sans-serif']=['Hiragino Sans GB'] # MAC 下解決中文亂碼的方法
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號  通用

3、安裝環境

pip3 install matplotlib 

如果上面的方法太慢,建議使用下面方法

選用的是清華源

pip3 install -i https://pypi.doubanio.com/simple/ matplotlib

3.1 折線圖

plt.figure() # 用來設定圖片,如引數figsize 設定圖片大小,dpi 設定圖片解析度

plt.style.use() # 畫布風格,可以採用seaborn 的 風格

例如:plt.style.use(‘seaborn-whitegrid’) 主題為白的網格畫布

plt.plot() # 新增x,y引數 label:圖例名稱 ,color:顏色,ls:線條型別 ,lw:線條寬度

plt.legend() #新增圖例 ,新增loc引數可以改變圖例位置

plt.ylabel()、 plt.xlabel()、 plt.title()分別是y軸標籤,x軸標籤和標題

plt.show() # 展示

在開始之前,環境如下:每個demo 之前

import numpy as np  
import matplotlib.pyplot as plt
import pandas as pd   
import random
plt.rcParams['font.sans-serif']=['Hiragino Sans GB'] # 由於我的是mac 所以採用mac 中文亂碼解決方法
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

下面是折線圖的demo

x = range(120)
y = [random.uniform(20,35) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
_x_xticks = ['10點{}分'.format(i) for i in range(60)]
_x_xticks += ['11點{}分'.format(i) for i in range(60)]
plt.xticks(list(x)[::10],_x_xticks[::10],rotation=45)   # xaix [::10] 列表取步長,為了X軸顯示不那麼緊密
plt.xlabel('時間')
plt.ylabel('溫度')
plt.title('溫度隨時間變化圖')
plt.plot(x,y,label='曲線',color='red',ls='-.',lw=2.4)
plt.legend(loc='best')
plt.show()

在這裡插入圖片描述

3.2 散點圖 —demo

a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

a_x = range(1,32)
b_x = range(51,82)
# 設定畫布大小
plt.figure(figsize=(20,8),dpi=80)
# 橫座標
_x = list(a_x)+list(b_x)
_x_xticks = ['3月{}日'.format(i) for i in a_x]
_x_xticks += ['11月{}日'.format(i-50) for i in b_x]
plt.xticks(_x[::5],_x_xticks[::5],rotation=45)
# 畫圖
plt.scatter(a_x,a,label='3月')
plt.scatter(b_x,b,label='11月')
# 新增圖例
plt.legend()
# 展示
plt.show()

在這裡插入圖片描述

3.3 條形圖—demo

a = ["戰狼2","速度與激情8","功夫瑜伽","西遊伏妖篇","變形金剛5\n:最後的騎士","摔跤吧!爸爸","加勒比海盜5\n:死無對證","金剛:骷髏島","極限特工\n:終極迴歸","生化危機6:終章","乘風破浪","神偷奶爸3","智取威虎山","大鬧天竺","金剛狼3\n:殊死一戰","蜘蛛俠\n:英雄歸來","悟空傳","銀河護衛隊2","情聖","新木乃伊",]

b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23] 

# 設定畫布大小
plt.figure(figsize=(20,8),dpi=80)
# 橫座標設定
_x = range(len(a))
plt.xticks(_x,a,rotation=90)
# 畫圖
plt.bar(_x,b,label='票房資料',width=0.3,color='orange')
# 新增圖例
plt.legend()
plt.ylabel('單位:億')
plt.title("內地票房top20")
plt.xlabel('電影名稱')
# 儲存圖片
plt.savefig('/Users/apple/Desktop/個人學習/img/demo_3.png')
# 展示
plt.show()

在這裡插入圖片描述

3.4 進階條形圖 —demo

a = ["猩球崛起3:終極之戰","敦刻爾克","蜘蛛俠:英雄歸來","戰狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]

# 設定畫布大小
plt.figure(figsize=(20,8),dpi=80)
# 設定橫座標
_bar_width = 0.2
_x = range(len(a))
_x_xticks = [i + _bar_width for i in _x]
plt.xticks(_x_xticks,a)
# 畫圖
plt.bar(_x,b_14,width=_bar_width,label='9月14日')
plt.bar([i+_bar_width for i in _x],b_15,width=_bar_width,label='9月15日')
plt.bar([i+_bar_width*2 for i in _x],b_16,width=_bar_width,label='9月16日')

# 新增圖例
plt.legend()
# 新增標題
plt.ylabel('票房(單位:萬元)')
plt.title('9月14、15、16三天票房')
plt.xlabel('電影名')
# 新增網格
# plt.grid(alpha=0.4)
# 儲存圖片
plt.savefig('/Users/apple/Desktop/個人學習/img/demo_4.png')
# 展示
plt.show()

在這裡插入圖片描述

總結 :若上訴的圖片無法展示且報錯,請在jupyter notebook 中新增一行

%matplotlib inline   

原理如下:Matplotlib嵌入Jupyter之後,這種Matplotlib生成的影像就處於一種非互動的模式,而%matplotlib inline命令就是啟用Matplotlib,為Ipython和Jupyter提供“內嵌後端”支援,也就是作為一個靜態影像嵌入Jupyer中,因此Matplotlib就不需要使用plt.show()來主動呼叫影像展示視窗

相關文章