各種統計圖的特點和用途
什麼是matplotlib
最流行的python底層繪圖庫,主要做數據可視化圖表,名字取材於MATLAB,模仿MATLIB構建
爲什麼要學習matplotlib
- 能將數據進行可視化,更直觀的呈現
- 使數據更加客觀、更具說服力
matplotlib基本要點
安裝matplotlib:pip install matplotlib
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,14.5,17,20,22,24,25,26,26,18,15]
#設置圖片大小,並且設置dpi參數使圖片更清晰
plt.figure(figsize=(15,8),dpi=80)
#繪圖
plt.plot(x,y)
#繪製x軸的刻度
plt.xticks(x)
# plt.xticks(range(2,26))
# plt.xticks(x[::3]) #設置步長
#繪製y軸的刻度
plt.yticks(range(min(y),max(y)+1))
#保存
# plt.savefig('./t1.png')
#展示
plt.show()
練習題1
# 如果列表a表示10點到12點的每一分鐘的氣溫, 如何繪製折線圖觀察每分鐘氣溫的變化情況?
# a = [random.randint(20, 35) for i in range(120)]
from matplotlib import pyplot as plt
import random
from matplotlib import font_manager
#設置字體的方式
my_font = font_manager.FontProperties(fname='ziti.ttf')
x = range(0,120)
y = [random.randint(20, 35) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
#調整x軸的刻度
_x = list(x)
_xtick_labels = ["10點{}分".format(i) for i in range(60)]
_xtick_labels += ["11點{}分".format(i) for i in range(60)]
#取步長,數字和字符串要求一一對應,數據的長度才能一樣
#把數值型數據對應到字符串數據上
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font) #rotation旋轉的度數爲90度
# plt.xticks(_x[::3],_xtick_labels[::3],rotation=45) #rotation旋轉的度數爲90度
#添加描述信息
plt.xlabel("時間",fontproperties=my_font) #x軸描述信息
plt.ylabel("溫度 單位℃",fontproperties=my_font) #y軸描述信息
plt.title("十點到十二點每分鐘的溫度變化情況",fontproperties=my_font) #標題
plt.show()
練習題2
# 假設大家在30歲的時候,根據自己的實際情況,統計出來了從11歲到30歲每年交的女(男)朋友的數量如列表a,請繪製出該數據的折線圖,
# 以便分析自己每年交女(男)朋友的數量走勢
# a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
# 要求:
# y軸表示個數
# x軸表示歲數,比如11歲,12歲等
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='ziti.ttf')
x = range(11,31)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
#設置圖形大小
plt.figure(figsize=(15,8),dpi=80)
#繪圖
plt.plot(x,y)
#設置刻度
_x_labels = ["{}歲".format(i) for i in x]
plt.xticks(list(x)[::1],_x_labels[::1],fontproperties=my_font)
#添加描述信息
plt.xlabel("歲數",fontproperties=my_font)
plt.ylabel("交往的個數",fontproperties=my_font)
plt.title("11歲到30歲每年交往的走勢",fontproperties=my_font)
#繪製網格
plt.grid(alpha=0.4) #alpha設置透明度
plt.show()
# 假設大家在30歲的時候,根據自己的實際情況,統計出來了從11歲到30歲每年交的女(男)朋友的數量如列表a,請繪製出該數據的折線圖,
# 以便分析自己每年交女(男)朋友的數量走勢
# a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
# 要求:
# y軸表示個數
# x軸表示歲數,比如11歲,12歲等
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='ziti.ttf')
x = range(11,31)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
#設置圖形大小
plt.figure(figsize=(15,8),dpi=80)
#繪圖
plt.plot(x,y1,label='自己')
plt.plot(x,y2,label='同桌',linestyle='--') #線條風格爲虛線
#設置刻度
_x_labels = ["{}歲".format(i) for i in x]
plt.xticks(list(x)[::1],_x_labels[::1],fontproperties=my_font)
#添加描述信息
plt.xlabel("歲數",fontproperties=my_font)
plt.ylabel("交往的個數",fontproperties=my_font)
plt.title("11歲到30歲每年交往的走勢",fontproperties=my_font)
#繪製網格
plt.grid(alpha=0.4) #alpha設置透明度
#添加圖例
plt.legend(prop=my_font,loc='best') #顯示中文
plt.show()
調整圖例的位置