數據可視化(圖形繪制基礎)
- 前言
- 一、圖形繪制基礎
- Matplotlib簡介
- 使用過程
- sin函數示例
- 二、常用圖形繪制
- 折線圖的繪制
- plot
- 示例
- 散點圖的繪制
- scatter()
- 示例
- 柱狀圖的繪制
- bar
- 示例
- 箱型圖繪制
- plot.box
- 示例
- 餅狀圖的繪制
- pie
- 示例
- 三、圖形繪制的組合情況
- 多個折線圖的組合繪制
- 示例
- 折線圖和散點圖的組合繪制
- 示例
- 柱狀圖與折線圖的組合繪制
- 示例
- 四、拓展
- 熱力圖
- heatmap
- 改變數據采樣頻率
- resample
- 示例
- 創建多個子圖
- subplots()
- 調整子圖之間的間距
- subplots_adjust
- 決策樹
- plot_tree
前言
推薦一個網站給想要了解或者學習人工智能知識的讀者,這個網站里內容講解通俗易懂且風趣幽默,對我幫助很大。我想與大家分享這個寶藏網站,請點擊下方鏈接查看。
https://www.captainbed.cn/f1
數據可視化是指利用圖形、表格、圖表等方式將數據展示出來,使得數據更加清晰、易于理解和分析。圖形繪制是數據可視化的基礎,通過繪制各種圖形呈現數據,可以更加直觀地了解數據之間的關系和趨勢。
如果畫圖過程中出現
FutureWaring
問題
import warning
warnings.filterwarnings('ignore')
針對中文不顯示
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
在當今數字化時代,數據分析已成為各行各業中不可或缺的一環。Python,作為數據分析領域的明星語言,憑借其強大的數據處理能力和豐富的庫資源,正逐漸受到越來越多數據分析師的青睞。而在數據分析的過程中,數據可視化作為直觀展示數據特征和規律的重要手段,更是不可或缺。
Python中,有許多專門用于數據可視化的庫,其中最為著名的莫過于Matplotlib
和Seaborn
。Matplotlib
作為Python中最早的數據可視化庫,提供了豐富的繪圖函數和靈活的配置選項,可以滿足大部分基本的繪圖需求。而Seaborn
則是在Matplotlib
的基礎上,進一步封裝和優化,提供了更加美觀和高級的繪圖接口。
在圖形繪制基礎方面,我們需要掌握幾個核心概念,包括坐標軸、圖例、標題、標簽等。坐標軸是圖表的基礎,用于展示數據的分布情況;圖例用于區分不同系列的數據;標題和標簽則用于說明圖表的主題和內容。
接下來,我們通過幾個簡單的例子來演示如何使用Matplotlib
進行基本的圖形繪制。
我們使用Matplotlib
來繪制一個簡單的折線圖。假設我們有一組關于某公司股票價格的數據,我們可以通過折線圖來展示股票價格的走勢。在Matplotlib
中,我們可以使用plot()
函數來繪制折線圖,通過設置x
軸和y
軸的數據,以及圖表的標題、坐標軸標簽等參數,就可以生成一個基本的折線圖。
當然,除了折線圖和箱線圖之外,還有許多其他類型的圖形可以用于數據可視化,如柱狀圖、散點圖、餅圖等。每種圖形都有其適用的場景和優缺點,需要根據具體的數據特征和需求來選擇合適的圖形類型。
一、圖形繪制基礎
Matplotlib簡介
Matplotlib
是目前應用最為廣泛的python擴展繪圖模塊庫,是Python中最受歡迎的數據可視化軟件包之一。Matplotlib
支持跨平臺運行,能讓使用者很輕松地將數據轉化為高質量圖形,并且提供了多樣化的輸出格式,常用于繪制2D圖形,同時也提供了一部分3D繪圖接口。
Matplotlib
提供了類似于MATLAB
的繪圖函數,對于熟悉MATLAB
的使用者來說,可以很容易的使用它。Matplotlib
通常與NumPy
和pandas
擴展包一起使用,最常見的使用方式是根據NumPy
庫的N
維數組類型ndarray
來繪制2D圖像,使用簡單、代碼清晰易懂,深受廣大技術愛好者的喜愛,是數據分析中不可或缺的重要工具之一。
使用過程
使用pylab
或pyplot
繪圖時一般過程為:首先讀入數據,然后根據實際需要繪制折線圖、散點圖、柱狀圖、餅狀圖、雷達圖或三維曲線和曲面,接下來設置軸和圖形屬性,最后顯示或保存繪圖結果。
sin函數示例
【例7.1】請利用python繪制正弦函數曲線。
關鍵技術:采用Matplotlib
包Pyplot
模塊的plot
函數繪制曲線圖。
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import math
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
x = np.arange(0,math.pi*2,0.05)
y = np.sin(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("sine")
plt.title("sine curve")
plt.show()
二、常用圖形繪制
折線圖的繪制
折線圖是最基本的圖表類型,是用點和點之間連線的上升或下降表示指標的連續變化趨勢。折線圖反映了一段時間內事物連續的動態變化規律,適用于描述一個變量隨另一個變量變化的趨勢,通常用于繪制連續數據,適合數據點較多的情況。
plot
matplotlib
是一個用于繪制圖形的Python庫,其中的plot函數用于繪制線條圖。下面是matplotlib
中plot
函數的詳細解釋:
plot(x, y, label, linestyle, color, linewidth, marker)
參數說明:
x
:表示x
軸上的數據序列,可以是一個列表、數組或Series
類型的數據,也可以是一個數字,此時表示生成從0到該數字的等間隔的數據序列。y
:表示y
軸上的數據序列,要求與x
軸上的數據序列長度相同。label
:給繪制的線條指定一個標簽,可以在繪制圖例時使用。linestyle
:線條的樣式,可以是實線(‘solid
’)、虛線(‘dashed
’)、點線(‘dotted
’)等,默認為實線。color
:線條的顏色,可以是一個關鍵字字符串(如’red
’、'blue
’等),也可以是一個RGB
元組表示的顏色(如(0.1, 0.2, 0.3)
),默認為藍色。linewidth
:線條的寬度,可以是一個數字,默認為1。marker
:線條上的標記點的樣式,可以是一個關鍵字字符串(如’+
'、‘o
’等),也可以是一個標記字符(如’x
’、's
’等),默認為沒有標記點。
使用plot
函數可以繪制不同樣式的線條圖,可以通過設置不同的參數來定制線條的樣式、顏色、寬度、標記點等。在繪制完所有的線條后,可以使用plt.legend()
函數來添加圖例,使得不同線條對應的標簽在圖中顯示出來。
示例
【例7.4】請根據給定的兩組數據x
和y
,分別代表某城鎮居民消費水平增長率和對應的年份,利用Python繪制城鎮居民消費水平增長率折線圖。
關鍵技術:利用matplotlib
包的plot
方法進行折線圖的繪制。
y = [8.07,6.42,9.79,8.20,7.69,6.02,7.86,6.93,6.84,9.04,10.06]
x= [2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020]
plt.plot(x,y,'g',lw = 4,label = '城鎮居民消費水平增長率')
plt.legend(loc = 5)
plt.grid(True)
plt.xlabel("年")
plt.ylabel('增長率')
plt.title("我國歷年城鎮消費水平增長率")
散點圖的繪制
散點圖是以直角坐標系中各點的密集程度和變化趨勢來表示兩種現象間的相關關系,常用于顯示和比較數值。當要在不考慮時間的情況下比較大量數據點時,使用散點圖比較數據方便直觀。散點圖將序列顯示為一組點,其中每個散點值都由該點在圖表中的坐標位置表示。對于不同類別的點,則由圖表中不同形狀或顏色的標記符表示。同時,也可以設置標記符的顏色或大小。
scatter()
scatter
是matplotlib
庫中用于繪制散點圖的函數。散點圖是一種用于展示兩個變量之間關系的圖形,其中每個點代表一個數據樣本。
scatter
函數可以接受一系列的x
和y
坐標作為輸入,然后將這些坐標在圖中繪制成散點。
下面是scatter
函數的基本用法:
import matplotlib.pyplot as plt# 準備散點的x和y坐標
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]# 繪制散點圖
plt.scatter(x, y)# 顯示圖形
plt.show()
這段代碼會生成一個簡單的散點圖,其中x坐標為1, 2, 3, 4, 5
,y
坐標為2, 4, 6, 8, 10
。
scatter
函數還可以接受一些常用的參數,用于調整散點圖的樣式和外觀,例如:
s
:設置散點的大小。可以傳入一個常數,表示所有散點的大小;也可以傳入一個數組,表示每個散點的大小。c
:設置散點的顏色。可以傳入一個常數,表示所有散點的顏色;也可以傳入一個數組,表示每個散點的顏色。marker
:設置散點的形狀。可以傳入一個字符,表示所有散點的形狀;也可以傳入一個數組,表示每個散點的形狀。alpha
:設置散點的透明度。
下面是一個示例代碼,展示了如何使用這些參數調整散點圖的樣式:
import matplotlib.pyplot as plt
import numpy as np# 生成隨機數據
np.random.seed(0)
x = np.random.randn(100)
y = np.random.randn(100)# 繪制散點圖,設置散點的大小、顏色和形狀
plt.scatter(x, y, s=50, c='r', marker='o', alpha=0.5)# 顯示圖形
plt.show()
這段代碼會生成一個具有隨機數據的散點圖,散點的大小為50,顏色為紅色,形狀為圓形,透明度為0.5。
除了基本的用法和常用參數,scatter函數還有其他一些參數,用于進一步控制散點圖的樣式和外觀,例如:
edgecolors
:設置散點邊緣的顏色。linewidths
:設置散點邊緣的寬度。cmap
:設置顏色映射,用于根據數值變化為散點著色。norm
:設置歸一化器,用于歸一化數值。label
:設置散點圖的標簽,用于圖例顯示。
可以參考Matplotlib
官方文檔獲取更多關于scatter
函數的詳細說明和示例代碼。
示例
【例7.5】對于給定的兩個市場收益率的波動情況數據x
和y
,請利用Python繪制散點圖來反映兩個市場的波動率情況。
關鍵技術:利用matplotlib
包的plot
函數進行散點圖的繪制,與繪制折線圖相比,繪制散點圖只用到一組數據,而繪制折線圖需要用到兩組對應的數據。
x = np.random.randint(0,5,10)
y = np.random.randint(0,5,10)
plt.figure(figsize = (10,10))
plt.subplot(121)
plt.ylim((-5,5))
plt.plot(x,'ro',label = '第一組')
plt.grid(True)
plt.title('第一組市場波動情況')
plt.subplot(122)
plt.ylim((-5,5))
plt.plot(y,'b*',label = '第二組')
plt.grid(True)
plt.title('第二組市場波動情況')
plt.savefig('test',dpi = 600)
plt.show()
柱狀圖的繪制
bar
matplotlib
的bar
函數用于繪制柱狀圖,它是一個非常常用的數據可視化工具。
下面是bar
函數的詳細介紹:
語法:
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, align='center', data=None, **kwargs)
參數:
x
:柱狀圖的x
軸位置,可以是一個數值或者一個數組,表示每個柱狀圖的位置。height
:柱狀圖的高度,可以是一個數值或者一個數組,表示每個柱狀圖的高度。width
:柱狀圖的寬度,默認值為0.8。bottom
:柱狀圖的底部位置,默認為None
,表示從0開始繪制柱狀圖。align
:柱狀圖的對齊方式,默認為’center
’,表示柱狀圖的中心與給定位置對齊。data
:傳入一個DataFrame
或者一個類似結構的數據集,x
和height
參數可以直接從data
中獲取。
其他常用參數:
color
:柱狀圖的顏色,可以是一個字符串,表示柱狀圖顏色的名稱,也可以是一個列表,表示每個柱狀圖的顏色。edgecolor
:柱狀圖的邊框顏色,默認為None
,表示不顯示邊框。label
:柱狀圖的標簽,可以在圖例中顯示。tick_label
:柱狀圖的刻度標簽,可以在x
軸上顯示。alpha
:柱狀圖的透明度,取值范圍為0到1。
用例:
import matplotlib.pyplot as plt
import numpy as npx = np.arange(5)
y = [1, 4, 3, 2, 5]
plt.bar(x, y, color='blue', align='center')plt.xlabel('x')
plt.ylabel('y')
plt.title('Bar Chart')
plt.show()
此代碼將繪制一個簡單的柱狀圖,x
軸是0到4,y
軸是給定的數組y
的值。柱狀圖的顏色為藍色,對齊方式為居中。在圖像的x
軸標簽、y
軸標簽和標題上顯示對應的文字。最后調用plt.show()
來顯示圖像。
以上提供了matplotlib
的bar
函數的詳細介紹和一個簡單的用例。通過使用不同的參數和組合,您可以根據自己的需求繪制出各種類型的柱狀圖。
示例
【例7.7】對于給定的2020年9月至2021年3月期間某基金產品發行數量的數據,該數據以字典形式存儲,形式如下所示。請利用Python將其以柱狀圖的形式繪制出來。
{'202009': 2324,'202010': 2814,'202011': 2525,'202012':2946,'202101': 3019,'202102': 2087,'202103': 3398}
關鍵技術:可以利用Python的matplotlib
包的bar
方法進行柱狀圖繪制。
dict = {'202009': 2324,'202010': 2814,'202011': 2525,'202012': 2946,'202101': 3019,'202102': 2087,'202103': 3398}
plt.figure (figsize= (9,5) )
plt.bar (dict.keys (),dict.values (),width=0.3, align='center' , label=' funds')
plt.grid (True)
plt.legend (loc=1)
plt.xlabel ('月')
plt.ylabel('發行數量')
plt.title('基金產品發行數量')
plt.savefig ( 'test', dpi=600)
箱型圖繪制
plot.box
plot.box
是matplotlib
庫中的一個函數,用于繪制箱線圖。箱線圖是一種統計圖表,用于展示一組數據的分布情況。它顯示了數據的中位數、上下四分位數、最小值和最大值,以及異常值。
箱線圖可以幫助我們了解數據的偏態、離散度和異常值情況。
plot.box
的基本語法為:
matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_xticks=True, autorange=False, zorder=None)
參數說明:
x
:要繪制箱線圖的數據,可以是一個一維數組或一個二維數組。notch
:箱線圖的缺口,默認為None
。sym
:異常值的標記,默認為None
。vert
:箱線圖的方向,默認為True
(垂直方向),設置為False
可以繪制水平方向的箱線圖。whis
:決定繪制箱線圖上下邊界的位置,默認為1.5
。boxprops
:箱線圖的屬性設置,包括顏色、線寬等,默認為None
。flierprops
:異常值的屬性設置,默認為None
。medianprops
:中位數的屬性設置,默認為None
。meanprops
:均值的屬性設置,默認為None
。capprops
:邊界線的屬性設置,默認為None
。whiskerprops
:whisker
的屬性設置,默認為None
。manage_xticks
:是否自動管理x
軸的刻度,默認為True
。autorange
:是否自動確定y
軸的范圍,默認為False
。zorder
:圖層順序,默認為None
。
除了以上參數,plot.box
還可以接受一些其他參數,用于設置標題、坐標軸標簽、圖例等。詳細的參數說明可以參考matplotlib
官方文檔。
下面是一個簡單的示例代碼,演示如何使用plot.box
繪制箱線圖:
import matplotlib.pyplot as plt
import numpy as np# 生成一組隨機數據
np.random.seed(123)
data = np.random.normal(0, 1, 100)# 繪制箱線圖
plt.boxplot(data)# 添加標題和坐標軸標簽
plt.title('Box Plot')
plt.xlabel('Data')# 顯示圖形
plt.show()
運行以上代碼,會生成一個簡單的箱線圖,顯示了隨機數據的中位數、上下四分位數、最小值和最大值,以及異常值(如果有)。
除了上述的示例代碼,plot.box
還可以接受一維或二維的數據作為參數,用于繪制多組數據的箱線圖。可以通過設置參數來修改箱線圖的樣式,如顏色、線寬等。此外,還可以使用matplotlib
的其他函數和方法來進一步自定義繪圖。
示例
【例7.8】下面給定的數據是某公司產品在各個國家用戶的消費分布圖,請根據以下數據利用Python繪制箱型圖。
'Japan': [1200, 1300, 1500, 1400, 1600, 1600, 1800, 1800, 1900, 2400],
'USA': [1200, 1350, 1400, 1500, 1660, 1800, 1700, 1900, 2100, 2000],
'Russia': [1100, 1200, 1200, 1400, 1300, 1600, 1700, 1900, 1900, 1800],
"Korean": [1200, 1100, 1000, 1300, 1200, 1500, 1600, 1700, 1800, 1800]
關鍵技術:可以利用Python的plot.box
繪制箱型圖。
data = {'Japan': [1200,1300,1500,1400,1600,1600,1800,1800,1900,2400],
'USA': [1200, 1350, 1400, 1500, 1660, 1800, 1700, 1900, 2100, 2000],
'Russia': [1100, 1200, 1200, 1400, 1300, 1600, 1700, 1900, 1900, 1800],
"Korean": [1200, 1100, 1000, 1300, 1200, 1500, 1600, 1700, 1800, 1800]}
df = pd.DataFrame(data)
df.plot.box(title = "某公司產品各個國家用戶消費分布圖")
plt.grid(linestyle = '--',alpha = 0.3)
plt.savefig('test',dpi = 600)
plt.show()
餅狀圖的繪制
pie
在matplotlib
中,可以使用pie
函數繪制餅圖。餅圖用于展示各類別的占比關系,適用于數據的相對比較。下面是使用pie
函數繪制餅圖的詳細步驟和參數說明。
導入庫:
import matplotlib.pyplot as plt
準備數據:
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
繪制餅圖:
plt.pie(sizes, labels=labels)
plt.show()
繪制餅圖時,主要使用了兩個參數:
sizes
:代表各類別的占比值,要求是一個一維數組或列表。labels
:代表各類別的標簽,要求是一個與sizes
長度相同的一維數組或列表。可選參數,默認值為None。
除此之外,還可以使用其他一些參數進行餅圖的個性化設置,比如:
autopct
:控制餅圖中百分比的顯示方式。可選參數,默認值為None。可以使用字符串格式控制顯示,例如'%.1f%%'
表示保留一位小數的百分比。explode
:控制各類別之間的間隔。可選參數,默認值為None。可以使用一維數組或列表來指定各類別的偏移量,例如[0, 0.1, 0, 0]
表示第二個類別偏移0.1。colors
:控制各類別的顏色。可選參數,默認值為None。可以使用一維數組或列表來指定顏色,例如['red', 'blue', 'green', 'yellow']
。startangle
:控制餅圖的起始角度,逆時針方向。可選參數,默認值為0。shadow
:控制是否顯示陰影。可選參數,默認值為False。
下面是一個綜合使用了上述參數的例子:
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
explode = [0, 0.1, 0, 0]
colors = ['red', 'blue', 'green', 'yellow']plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%.1f%%', startangle=90, shadow=True)
plt.axis('equal')
plt.show()
通過調整上述參數,可以根據具體需求繪制出個性化的餅圖。
示例
【例7.9】某公司有A、B、C、D、E五種商品,每種商品占有的市場份額分別為15%、30%、30%、10%和15%,請利用Python的餅狀圖繪制上述數據的分布圖。
關鍵技術:可以利用Python的matplotlib
包中的pie
函數繪制餅狀圖。
import pandas as pd
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D', 'E']
x = [15,30,30,10,15]
plt.pie(x, labels=labels)
plt.savefig('test',dpi=600)
plt.show ()
三、圖形繪制的組合情況
多個折線圖的組合繪制
示例
【例7.10】給定時間范圍在2009年至2017年間兩種商品的市場銷售價格增長率數據集data1
, data2
。請利用Python的折線圖將兩種商品價格的增長率信息進行繪制,反映到圖上。
關鍵技術:可以利用matplotlib
包的plot
函數進行多折線圖的繪制。
data1 = np.random.randint(0,20,9)
data2 = np.random.randint(0,20,9)
year=[2009,2010,2011,2012,2013,2014,2015,2016,2017]
plt.plot(year,data1,lw=3,label='sales price increase rate')
plt.plot(year,data2,'r--',lw=3,label='construction costs increase rate')
plt.legend(loc=0)
plt.grid(True)
plt.xlabel('Year')
plt.ylabel('Percentage')
plt.title('sales price/construction costs increase rates')
折線圖和散點圖的組合繪制
示例
【例7.11】給定某只股票從2021年12月31日到2022年1月11日的收盤價格,請利用Python的折線圖和散點圖組合圖形式進行數據的繪制。
關鍵技術:可以利用Python的plot
函數進行繪制。
data = np.random.randint(10,20,7)
date = ['12/31/2021','04/01/2022','05/01/2022','06/01/2022','07/01/2022','10/01/2022','11/01/2022']
plt.figure(figsize=(7,4))
plt.plot(date,data,'b',label='stock xxxxxx')
plt.plot(date,data,'ro')
plt.grid(True)
plt.legend(loc=0)
plt.xlabel('日期')
plt.ylabel('收盤價')
plt.title('close price of stock xxxxx')
柱狀圖與折線圖的組合繪制
示例
【例7.11】 【例7.12】已知給定的某股票在2021年12月14日至2021年12月28日的收盤價格和交易量,請利用Python繪制雙坐標軸圖,其中左坐標軸反映交易量,以柱狀圖表示;右坐標軸反映成交價格,以折線圖表示。
close=[22.23,22.59,22.36,22.47,22.85,22.79,22.76,23.82,23.97,
5.38,25.5]
date=['12/14/2021','12/15/2021','12/16/2021','12/17/2021','12/21/2021','12/22/2021','12/23/2021','12/24/2021','12/25/2021','12/26/2021','12/21/2021']
vol=[34711261,35634241,40123423,39043212,45983023,429012,37584231,30029832,4039221,5023281,5598231]
fig,ax1=plt.subplots()
plt.bar(date,vol,width=0.3,label='交易量')
plt.legend(loc=1)
plt.xlabel('日 期')
plt.ylabel('交易量')
plt.title('stock xxxxxx')
plt.xticks(rotation = 60)
ax2=ax1.twinx()
plt.plot(close,'r',lw=2,label='收盤價')
plt.grid(True)
plt.legend(loc=8)
plt.ylabel('收盤價')
plt.savefig('test', dpi=600 , pad_inches='tight')
四、拓展
熱力圖
熱力圖是一種可視化數據的圖表方式,通過不同顏色的區塊來表示數據的密度或強度。熱力圖通常用于顯示熱點、密度分布或者數據趨勢。
在熱力圖中,顏色的深淺表示數據的強度或頻率,通常深色表示高強度或高頻率,淺色表示低強度或低頻率。通過觀察熱力圖的顏色變化,可以直觀地發現數據的分布情況或趨勢。
熱力圖可以用于各種領域,例如地理信息系統(GIS)、流量分析、市場研究等。在地理信息系統中,熱力圖可以用來顯示人口密度、空氣質量、交通流量等信息。在流量分析中,熱力圖可以用來顯示用戶活躍度、點擊量等數據。在市場研究中,熱力圖可以用來顯示產品銷售熱點、用戶偏好等信息。
繪制熱力圖可以使用各種工具和編程語言,例如Python的matplotlib
庫、R語言的ggplot2
包等。這些工具提供了豐富的功能和選項,可以根據具體需求進行定制。
heatmap
seaborn
是一個基于matplotlib
的數據可視化庫,它提供了許多簡潔而美觀的繪圖函數。seaborn
中的heatmap()
函數用于繪制熱力圖,熱力圖可以用來可視化矩陣或數據表中數值的大小和分布。
下面是一個使用heatmap()
函數繪制熱力圖的示例代碼:
import seaborn as sns
from matplotlib import pyplot as plt# 創建矩陣或數據表
data = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]# 繪制熱力圖
sns.heatmap(data)# 顯示圖表
plt.show()
運行代碼后,將會彈出一個窗口顯示繪制的熱力圖。默認情況下,heatmap()
函數將根據數據的值自動選擇顏色漸變,并在圖表中顯示顏色條以表示值的大小。你還可以通過設置參數來自定義熱力圖的樣式和屬性,例如調整顏色映射、添加標簽、設置標題等。具體的參數設置可以參考seaborn
的官方文檔。
改變數據采樣頻率
resample
在matplotlib
中,resample
是一個用于改變數據采樣頻率的函數。它可以用于將數據從高頻率采樣轉換為低頻率采樣,或者從低頻率采樣轉換為高頻率采樣。這個函數可以用于處理時間序列數據,通過平均、求和等方式來對數據進行采樣。
resample
函數的基本語法如下:
resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, limit=None, kind=None, convention=None)
其中,rule
參數用于指定新的采樣頻率,可以是字符串形式的時間間隔,比如’1D’代表每天采樣一次,'1H’代表每小時采樣一次,也可以是整數形式的數字,代表每個指定數量的樣本進行一次采樣。
-
how
參數用于指定進行采樣時使用的聚合函數,比如’mean
’代表計算均值,'sum
’代表計算總和。 -
axis
參數用于指定進行采樣的軸,默認是0,表示對行進行采樣。 -
fill_method
參數用于指定進行采樣時缺失數據的填充方式。 -
closed
和label
參數用于指定進行采樣時邊界的處理方式。 -
limit
參數用于指定進行采樣時最大允許的缺失樣本數量。 -
kind
參數用于指定進行采樣時的插值方式。 -
convention
參數用于指定進行采樣時的約定方式。
示例
下面是一個使用resample
函數對時間序列數據進行重新采樣的例子:
import matplotlib.pyplot as plt
import pandas as pd# 創建一個DataFrame對象,包含時間序列數據
data = pd.DataFrame({'value': [1, 2, 3, 4, 5]}, index=pd.date_range(start='2022-01-01', periods=5, freq='D'))# 將數據從每天采樣一次轉換為每兩天采樣一次
resampled_data = data.resample('2D').mean()# 打印結果
print(resampled_data)
執行上述代碼,將會得到如下輸出:
value
2022-01-01 1.5
2022-01-03 4.5
這里使用了resample
函數將每天采樣一次的數據轉換為每兩天采樣一次的數據,并使用均值方式進行采樣。所以結果中的第一個值為前兩天的數據的均值((1+2)/2=1.5),第二個值為后兩天的數據的均值((4+5)/2=4.5)。
創建多個子圖
subplots()
matplotlib.pyplot.subplots
函數是用于創建多個子圖的工具。它返回一個包含所有子圖的Figure
對象和一個包含所有子圖軸對象的Axes
對象數組。
subplots
函數的一般語法如下:
fig, axes = plt.subplots(nrows=1, ncols=1, figsize=None, ...)
參數說明:
nrows
:子圖的行數。ncols
:子圖的列數。figsize
:一個元組,指定圖形的寬度和高度。
例如,如果我們要創建一個包含兩行兩列的子圖,可以這樣做:
import matplotlib.pyplot as pltfig, axes = plt.subplots(nrows=2, ncols=2)
然后,我們可以使用axes
數組中的元素來操作每個子圖軸對象。例如,可以使用axes[0, 0]
表示第一個子圖的軸對象。
以下是一個完整的示例:
import numpy as np
import matplotlib.pyplot as plt# 創建一個包含兩行兩列的子圖
fig, axes = plt.subplots(nrows=2, ncols=2)# 生成一些隨機數據
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)# 在每個子圖中繪制不同的函數
axes[0, 0].plot(x, y1)
axes[0, 1].plot(x, y2)
axes[1, 0].plot(x, y3)
axes[1, 1].plot(x, y4)plt.show()
上述代碼將創建一個2x2的子圖網格,并在每個子圖中繪制不同的函數。
調整子圖之間的間距
subplots_adjust
subplots_adjust
是matplotlib
中的一個函數,用于調整子圖之間的間距。它可以用于調整子圖布局,使得子圖之間的間距更合適。
函數的語法如下:
matplotlib.pyplot.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
參數說明如下:
left
:左邊界的位置。默認為0.125。bottom
:底邊界的位置。默認為0.1。right
:右邊界的位置。默認為0.9。top
:頂邊界的位置。默認為0.9。wspace
:子圖之間的寬度間距。默認為0.2。hspace
:子圖之間的高度間距。默認為0.2。
調用subplots_adjust
函數后,可以通過調整上述參數的值來達到調整子圖布局的效果。
決策樹
plot_tree
plot_tree
是scikit-learn
庫中DecisionTreeClassifier
和DecisionTreeRegressor
類的一個方法,用于繪制決策樹模型的樹形圖。
使用plot_tree
需要先對DecisionTreeClassifier
或DecisionTreeRegressor
類進行訓練,然后傳入已經訓練好的模型對象,以及需要繪制的樹形圖的配置參數。
下面是plot_tree
的常用參數:
decision_tree
:訓練好的決策樹模型對象。feature_names
:特征的名稱列表。class_names
:類別的名稱列表。filled
:是否給節點填充顏色,默認為False
。rounded
:是否將節點的框圓角化,默認為False
。special_characters
:是否使用特殊字符,默認為False
。
使用示例:
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import plot_tree# 加載數據集
iris = datasets.load_iris()
X, y = iris.data, iris.target# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)# 創建決策樹分類器并訓練
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)# 繪制決策樹模型的樹形圖
plot_tree(clf, filled=True, rounded=True, feature_names=iris.feature_names, class_names=iris.target_names)
上述代碼將會繪制出一個決策樹模型的樹形圖,其中每個節點代表一個判斷條件,通過樹形圖可以清晰地了解決策樹的結構和特征的重要性。