Python資料視覺化在數據分析中扮演著關鍵角色,主要功能是將複雜的數據轉換為易於理解的圖形和圖表。透過視覺化,可以迅速捕捉數據中的模式、趨勢和異常,並有效地傳達分析結果。這對於發現潛在的問題、驗證假設和支援決策非常重要。Python提供了如Matplotlib、Seaborn、Plotly、Bokeh等強大的資料視覺化工具,使得創建專業和精美的圖表變得相對簡單和高效,今天將著重在介紹Matplotlib的基礎使用。
# 可使用目錄功能快速確認要閱覽的主題
import matplotlib.pyplot as plt
# 第一組數據
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
# 第二組數據
x2 = [1, 2, 3, 4, 5]
y2 = [2, 6, 12, 18, 27]
# 繪製圖表
plt.plot(x, y,label=['第一組數據圖例'])
plt.plot(x2, y2,label=['第二組數據圖例'])
# 設定可正常顯示繁體中文的字型
plt.rc('font',family='Microsoft JhengHei')
# 添加標題和標籤
plt.title("簡單的折線圖")
plt.xlabel("X軸標籤")
plt.ylabel("Y軸標籤")
# 顯示圖例
plt.legend()
# 顯示圖表
plt.show()
import matplotlib.pyplot as plt
# 數據
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# 設定圖形大小和分辨率
plt.figure(figsize=(10, 5), dpi=100)
# 繪製折線圖並自定義參數
plt.plot(x, y, color='b', linestyle='--', linewidth=2.0, marker='o', markersize=8, markerfacecolor='red', markeredgecolor='blue', label='數據1')
# 設定標題和標籤
plt.title('折線圖示例')
plt.xlabel('X軸')
plt.ylabel('Y軸')
# 設定刻度標籤
plt.xticks([1, 2, 3, 4, 5])
plt.yticks([2, 3, 5, 7, 11])
# 顯示網格線
plt.grid(True)
# 顯示圖例
plt.legend()
# 顯示圖形
plt.show()
color
:設定折線的顏色,例如 'r'
(紅色),'#00FF00'
(綠色)。linestyle
:設定折線的樣式,例如 '-'
(實線),'--'
(虛線),'-.'
(點劃線),':'
(點線)。linewidth
:設定折線的寬度,例如 2.0
。marker
:設定數據點的標記樣式,例如 'o'
(圓點),'s'
(正方形),'^'
(三角形)。markersize
:設定標記的大小,例如 8
。markerfacecolor
:設定標記內部顏色。markeredgecolor
:設定標記邊緣顏色。plt.xticks()
和 plt.yticks()
:設定刻度標籤。plt.grid()
:顯示或隱藏網格線。plt.figure(figsize=(width, height), dpi=dpi)
:設定圖形大小和分辨率。import matplotlib.pyplot as plt
# 數據
x = ['A', 'B', 'C', 'D']
y = [5, 7, 3, 4]
# 繪製柱狀圖
plt.bar(x, y)
# 添加標題和標籤
plt.title("簡單的柱狀圖")
plt.xlabel("類別")
plt.ylabel("值")
# 設定可正常顯示繁體中文的字型
plt.rc('font',family='Microsoft JhengHei')
# 顯示圖表
plt.show()
import matplotlib.pyplot as plt
# 數據
x = [3, 4, 1]
y = [8, 5, 2]
# 繪製柱狀圖
plt.bar(x, y)
# 添加標題和標籤
plt.title("簡單的柱狀圖")
plt.xlabel("X軸")
plt.ylabel("Y軸")
# 設定可正常顯示繁體中文的字型
plt.rc('font',family='Microsoft JhengHei')
# 顯示圖表
plt.show()
# X 如果是數值,數值本身有連續性,即使 X = [3, 4, 1,],最終顯示的排序由左至右會是[1, 3, 4]
import matplotlib.pyplot as plt
# 數據
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 25]
# 設定圖形大小和分辨率
plt.figure(figsize=(10, 5), dpi=100)
# 繪製柱狀圖並自定義參數
plt.bar(categories, values, color='skyblue', edgecolor='black', linewidth=1.5, hatch='/', width=0.5, label='數據1')
# 設定標題和標籤
plt.title('柱狀圖示例')
plt.xlabel('類別')
plt.ylabel('值')
# 設定刻度標籤
plt.xticks(categories)
plt.yticks([0, 5, 10, 15, 20, 25])
# 顯示網格線
plt.grid(True)
# 顯示圖例
plt.legend()
# 顯示圖形
plt.show()
color
:設定柱子的顏色,可以是一個顏色或一個顏色列表。edgecolor
:設定柱子邊框的顏色。linewidth
:設定柱子邊框的寬度。hatch
:設定柱子的圖案填充,例如 '/'
(斜線),'\\'
(反斜線),'|'
(垂直線),'-'
(水平線)。width
:設定柱子的寬度。plt.xticks()
和 plt.yticks()
:設定刻度標籤。plt.grid()
:顯示或隱藏網格線。plt.figure(figsize=(width, height), dpi=dpi)
:設定圖形大小和分辨率。import matplotlib.pyplot as plt
# 第一組數據
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
# 第二組數據
x2 = [1, 2, 3, 4, 5]
y2 = [2, 6, 12, 18, 27]
# 繪製散點圖
plt.scatter(x, y, label='標籤一')
plt.scatter(x2, y2, label='標籤二')
# 添加標題和標籤
plt.title("簡單的散點圖")
plt.xlabel("X軸")
plt.ylabel("Y軸")
# 設定可正常顯示繁體中文的字型
plt.rc('font',family='Microsoft JhengHei')
# 顯示圖例
plt.legend()
# 顯示圖表
plt.show()
import matplotlib.pyplot as plt
# 數據
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
sizes = [50, 100, 150, 200, 250]
colors = [1, 2, 3, 4, 5]
# 設定圖形大小和分辨率
plt.figure(figsize=(10, 5), dpi=100)
# 繪製散點圖並自定義參數
plt.scatter(x, y, s=sizes, c=colors, alpha=0.6, edgecolor='black', linewidth=1.5, label='數據1')
# 設定標題和標籤
plt.title('散點圖示例')
plt.xlabel('X軸')
plt.ylabel('Y軸')
# 設定刻度標籤
plt.xticks([1, 2, 3, 4, 5])
plt.yticks([2, 3, 5, 7, 11])
# 顯示網格線
plt.grid(True)
# 顯示圖例
plt.legend()
# 顯示圖形
plt.colorbar() # 顯示顏色條
plt.show()
color
:設定點的顏色,可以是一個顏色或一個顏色列表。c
:設定點的顏色,可以使用單一顏色或一個數值序列來根據數值著色。marker
:設定標記樣式,例如 'o'
(圓點),'s'
(正方形),'^'
(三角形)。s
:設定點的大小,可以是一個數值或一個數值列表。alpha
:設定點的透明度,範圍從0(完全透明)到1(完全不透明)。edgecolor
:設定點的邊框顏色。linewidth
:設定點的邊框寬度。plt.xticks()
和 plt.yticks()
:設定刻度標籤。plt.grid()
:顯示或隱藏網格線。plt.figure(figsize=(width, height), dpi=dpi)
:設定圖形大小和分辨率。import matplotlib.pyplot as plt
# 數據
labels = 'A', 'B', 'C', 'D'
sizes = [15, 30, 45, 10]
# 繪製餅圖
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
# 添加標題
plt.title("簡單的餅圖")
# 設定可正常顯示繁體中文的字型
plt.rc('font',family='Microsoft JhengHei')
# 顯示圖例
plt.legend()
# 顯示圖表
plt.show()
autopct='%1.1f%%'
的解釋
autopct
參數用來控制餅圖上顯示的自動百分比標籤。這個參數接受一個字符串格式或一個函數,用來指定如何顯示每個餅圖部分的百分比。
%1.1f
:這是一個格式化字符串,用來指定浮點數的格式。
%
:這是格式化操作的開始標誌。用來指示如何格式化後面的數值。1
:這表示總共顯示至少1個字符(包括小數點和小數位)。.1
:這表示顯示1位小數。f
:這表示以浮點數格式顯示數值。%%
:這表示一個百分號。由於百分號在格式字符串中有特別的意義,所以需要用兩個百分號來表示一個實際的百分號。
import matplotlib.pyplot as plt
# 數據
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0, 0.1, 0, 0) # 將第二塊分離出來
# 繪製圓餅圖並自定義參數
plt.figure(figsize=(8, 8))
plt.pie(sizes, labels=labels, colors=colors, explode=explode, autopct='%1.1f%%', shadow=True, startangle=90, pctdistance=0.85, wedgeprops={'edgecolor': 'black'})
# 設置標題
plt.title('圓餅圖示例')
# 顯示圖形
plt.show()
colors
:設定各個部分的顏色,可以是一個顏色列表。startangle
:設定第一塊的起始角度,以度數為單位。autopct
:設定每塊的比例顯示格式,例如 '%1.1f%%'
表示保留一位小數的百分比。explode
:設定分離圓餅塊的距離,默認為0。如果要將某塊突出顯示,可以設置一個數值列表,其中需要分離的塊設置為大於0的值。shadow
:設置是否顯示陰影,取值為布林值。pctdistance
:設定比例文字距離圓心的距離,默認為0.6。normalize
:設置是否將數據標準化,使得總和為1。如果為 False
,數據不會被標準化。wedgeprops
:設置圓餅塊的屬性,例如邊框顏色、寬度等。# 圖片繪製完後,使用 plt.savefig 來儲存圖片
plt.savefig('plot.png')