一、折線圖繪製
1、繪圖流程
import matplotlib.pyplot as plt
import numpy as np
# 1、創建畫布
# figsize ==畫布尺寸
# dpi ---畫布像素
plt.figure()
# 默認不支持中文,需要配置RC 參數
plt.rcParams['font.sans-serif'] = 'SimHei'
# 設置字體之後不支持負號,需要去設置RC參數更改編碼
plt.rcParams['axes.unicode_minus'] = False
# 2、繪圖
# 準備座標
# 準備x 座標 準備y 座標 不這樣(x0,y0) (x1,y1)
# 下週北京的天氣溫度
x = np.arange(1, 8)
y = np.array([30, 29, 28, 22, 23, 30, 32])
# 繪製折線圖
plt.plot(x, y)
for i, j in zip(x, y):
# print(i,j)
# 參數1 x 軸位置
# 參數2 標註的y軸位置
# 參數3 標註的內容
plt.text(i, j + 0.5, "%d℃" % j, horizontalalignment='center')
# 設置橫軸中文 刻度
xticks = ["週一", "週二", "週三", "週四", "週五", "週六", "週日"]
plt.xticks(x, xticks)
# 3、顯示圖片
plt.show()
2、詳細介紹
import matplotlib.pyplot as plt
import numpy as np
# 1、創建畫布
# figsize=(20, 8), dpi=80
fig = plt.figure()
# 默認不支持中文,需要配置RC 參數
plt.rcParams['font.sans-serif'] = 'SimHei'
# 設置字體之後不支持負號,需要去設置RC參數更改編碼
plt.rcParams['axes.unicode_minus'] = False
# 2、繪圖
# 繪製sin曲線圖
# 準備座標
x = np.arange(0, 2 * np.pi, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
# get current axis 獲得座標軸對象
ax = plt.gca()
# 去除上邊 和 右邊的 座標邊框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 指定 data 設置的bottom(也就是指定的x軸)綁定到y軸的0這個點上
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
# 繪圖
# color 線的顏色
# linestyle 線性
# linewidth 線寬
# marker 點的形狀
# markersize 點的大小
# markerfacecolor 點的填充顏色
# markeredgecolor 點的邊緣顏色
plt.plot(x, y1, color='r', linestyle=':', linewidth=1.2, marker="*", markersize=7, markerfacecolor='b',
markeredgecolor='g')
plt.plot(x, y2)
# https://www.cnblogs.com/darkknightzh/p/6117528.html
# 修飾 建議全部放在繪圖之後
# 增加標題
plt.title("sinx/cosx曲線圖")
# 添加橫軸、縱軸標題
plt.xlabel("橫軸")
# 標註框的top位置
plt.ylabel("縱軸", rotation=0, horizontalalignment='right', verticalalignment='top')
# 增加圖例
# loc 圖例位置
plt.legend(["y=sinx", 'y=cosx'], loc=1)
# 設置橫縱座標刻度
yticks = np.arange(-1, 1.1, 0.5) # 對於y軸的刻度只能重新設置數組來設置刻度
# 對於x 軸,如果是值,那麼必須設置注意值的範圍
xticks = np.arange(0, 6.6, 0.5)
plt.xticks(xticks)
plt.yticks(yticks)
# 保存圖片
plt.savefig("./sinx、cosx曲線圖.png")
# 3、圖片顯示
plt.show()
二、散點圖
import numpy as np
import matplotlib.pyplot as plt
# 1、創建畫布
plt.figure()
# 2、繪圖
# 構建 x 與 y 軸座標
x = np.arange(1, 6)
y = np.random.randn(5)
# 繪製散點圖---比折線圖嚴格,x,y維數必須一致
# s 點的大小,可以傳一個,也可以傳一個數組,會從前往後依次使用大小
# c 點的顏色 ,可以傳一個,也可以傳一個array,會從前往後依次使用大小
# marker 點的形狀---,只能傳一個字符串"*"
# alpha --透明度
#
plt.scatter(x, y, s=[20, 50, 30, 18, ], c=['r', 'g', 'pink', 'y'], marker="*", alpha=1)
# 3、展示圖片
plt.show()
# 散點圖應用場景
# 1、類似於折線圖的散點圖可以用來描述走勢
# 2、聚集的散點圖可以用來描述點與點的相關性
三、柱狀圖
"""
直方圖 與柱狀圖 區別
直方圖:---數據的分佈情況,橫軸是數據範圍,縱軸是落在範圍內的頻數,適用於大數據
柱狀圖:---統計類別數據的數量,橫軸是數據的類別,縱軸是類別的頻數,適用於少量數據,而且類別不宜過多
"""
import matplotlib.pyplot as plt
import numpy as np
# 加載數據
res = np.load("./國民經濟覈算季度數據.npz", allow_pickle=True)
columns = res['columns']
values = res['values']
print("columns:\n", columns)
print("values:\n", values)
# 1、創建畫布
plt.figure()
# 默認不支持中文,需要配置RC 參數
plt.rcParams['font.sans-serif'] = 'SimHei'
# 設置字體之後不支持負號,需要去設置RC參數更改編碼
plt.rcParams['axes.unicode_minus'] = False
# 2、繪圖
x = np.arange(1, 4)
y = values[0, 3:6]
# 參數 x 類別數的標號
# 參數y 各個類別所對應的類別的數量
# width 是代表類別之間間距的百分之多少
# color 代表柱子的顏色,可以傳帶個字符串,也可以傳一個列表
plt.bar(x, y, width=0.8, color=['r', 'g', 'b'])
# 設置刻度
plt.xticks(x, ["A", 'B', 'C'])
# 標註
for i, j in zip(x, y):
plt.text(i, j + 100, "%.2f億元" % j, horizontalalignment='center')
# 柱狀圖不需要設置圖例
# 3、展示圖片
plt.show()
四、直方圖
import numpy as np
import matplotlib.pyplot as plt
# 繪製班級同學體重的分佈規律直方圖
# 1、創建畫布
plt.figure()
# 2、繪圖
# 假設咱們有20個同學
weight = np.array([40, 44, 48, 46, 51, 56, 58, 62, 69, 75, 89, 78, 69, 56, 88, 57, 49, 60, 50, 61])
# bins = 4 讓系統默認進行分組
# 可以自定義進行分組--等寬分組
# 計算最大值與最小值差值---極差
ptp = weight.max() - weight.min()
# 計算步長 並向上取整
step = np.ceil(ptp / 4)
# 設置等寬bins
bins = np.arange(weight.min(), weight.max() + step, step)
# print(bins)
plt.hist(weight, bins=bins, color='r', edgecolor='g')
# 設置x刻度
plt.xticks(bins)
# 增加網格曲線
plt.grid(True, axis='y', alpha=0.2)
# 不需要設置圖例
# 3、展示圖片
plt.show()
# 統計薪資分佈的直方圖
# 大家自己創建數據 [3000,20000]之間,創建25個人,自定義分組,去查看薪資分佈情況
# 需要寫出結論
五、餅圖
import matplotlib.pyplot as plt
import numpy as np
# 加載數據
res = np.load("./國民經濟覈算季度數據.npz", allow_pickle=True)
columns = res['columns']
values = res['values']
print("columns:\n", columns)
print("values:\n", values)
# 1、創建畫布
plt.figure()
# 默認不支持中文,需要配置RC 參數
plt.rcParams['font.sans-serif'] = 'SimHei'
# 設置字體之後不支持負號,需要去設置RC參數更改編碼
plt.rcParams['axes.unicode_minus'] = False
# 2、繪圖
# x 繪製餅圖的真實數據
# explode 部分距離餅心的距離,即縫隙
# labels 餅圖各部分的名稱
# labeldistance -名稱距離圓心的距離遠近
# color -餅圖各部分的顏色,可以是一個,也可以傳一個數組
# autopct ---佔比的顯示 以%.2f%%形式設置
# pctdistance ---顯示的佔比數據距離圓心的遠近
# radius 餅的半徑
# shadow 設置陰影
# 設置數據
x = values[-1, 3:6]
# 設置縫隙---長度必須和x 一致
explode = (0.01, 0.01, 0.01)
# 設置label
labels = [tmp[:4] for tmp in columns[3:6]]
# 設置顏色
color = ['r', 'g', 'y']
# 設置顯示位數
autopct = "%.1f%%"
plt.pie(x, explode=explode, labels=labels, colors=color, autopct=autopct, shadow=True)
# 將餅子捏圓
plt.axis('equal')
# 3、圖形展示
plt.show()
# 場景:
# 部分與整體的關係
# 部分與部分的關係
# 部分不能太多,部分不能太多
六、箱線圖
import numpy as np
import matplotlib.pyplot as plt
# 加載數據
res = np.load("./國民經濟覈算季度數據.npz", allow_pickle=True)
# 獲取數據
columns = res['columns']
values = res['values']
print("columns:\n", columns)
print("values:\n", values)
# 1、創建畫布
plt.figure()
# 默認不支持中文,需要配置RC 參數
plt.rcParams['font.sans-serif'] = 'SimHei'
# 設置字體之後不支持負號,需要去設置RC參數更改編碼
plt.rcParams['axes.unicode_minus'] = False
# 2、繪圖
# 給定x 的時候 每一個要畫的箱子的數據必須是一個整體元素
# x = (values[:, 3],values[:, 4],values[:, 5]) # 如果上面這種寫法報錯
x = list((list(values[:, 3]), list(values[:, 4]), list(values[:, 5])))
# notch 就是開缺口,---牽扯到數學概念---置信區間
# meanline 均線
# showmeans 展示均線
# labels 名稱
labels = [tmp[:4] for tmp in columns[3:6]]
plt.boxplot(x, notch=True, meanline=True, showmeans=True, labels=labels)
plt.grid(True)
# 3、展示圖片
plt.show()
# 沒有什麼具體的應用場景,只要有需求都可以使用