python數據分析——數據可視化(圖形繪制)

數據可視化(圖形繪制基礎)

  • 前言
  • 一、圖形繪制基礎
    • 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中,有許多專門用于數據可視化的庫,其中最為著名的莫過于MatplotlibSeabornMatplotlib作為Python中最早的數據可視化庫,提供了豐富的繪圖函數和靈活的配置選項,可以滿足大部分基本的繪圖需求。而Seaborn則是在Matplotlib的基礎上,進一步封裝和優化,提供了更加美觀和高級的繪圖接口。

在圖形繪制基礎方面,我們需要掌握幾個核心概念,包括坐標軸、圖例、標題、標簽等。坐標軸是圖表的基礎,用于展示數據的分布情況;圖例用于區分不同系列的數據;標題和標簽則用于說明圖表的主題和內容。

接下來,我們通過幾個簡單的例子來演示如何使用Matplotlib進行基本的圖形繪制。

我們使用Matplotlib來繪制一個簡單的折線圖。假設我們有一組關于某公司股票價格的數據,我們可以通過折線圖來展示股票價格的走勢。在Matplotlib中,我們可以使用plot()函數來繪制折線圖,通過設置x軸和y軸的數據,以及圖表的標題、坐標軸標簽等參數,就可以生成一個基本的折線圖。

當然,除了折線圖和箱線圖之外,還有許多其他類型的圖形可以用于數據可視化,如柱狀圖、散點圖、餅圖等。每種圖形都有其適用的場景和優缺點,需要根據具體的數據特征和需求來選擇合適的圖形類型。


一、圖形繪制基礎

Matplotlib簡介

Matplotlib是目前應用最為廣泛的python擴展繪圖模塊庫,是Python中最受歡迎的數據可視化軟件包之一。Matplotlib支持跨平臺運行,能讓使用者很輕松地將數據轉化為高質量圖形,并且提供了多樣化的輸出格式,常用于繪制2D圖形,同時也提供了一部分3D繪圖接口。

Matplotlib提供了類似于MATLAB的繪圖函數,對于熟悉MATLAB的使用者來說,可以很容易的使用它。Matplotlib通常與NumPypandas擴展包一起使用,最常見的使用方式是根據NumPy庫的N維數組類型ndarray來繪制2D圖像,使用簡單、代碼清晰易懂,深受廣大技術愛好者的喜愛,是數據分析中不可或缺的重要工具之一。

使用過程

使用pylabpyplot繪圖時一般過程為:首先讀入數據,然后根據實際需要繪制折線圖、散點圖、柱狀圖、餅狀圖、雷達圖或三維曲線和曲面,接下來設置軸和圖形屬性,最后顯示或保存繪圖結果。
在這里插入圖片描述

sin函數示例

【例7.1】請利用python繪制正弦函數曲線。

關鍵技術:采用MatplotlibPyplot模塊的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函數用于繪制線條圖。下面是matplotlibplot函數的詳細解釋:

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】請根據給定的兩組數據xy,分別代表某城鎮居民消費水平增長率和對應的年份,利用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()

scattermatplotlib庫中用于繪制散點圖的函數。散點圖是一種用于展示兩個變量之間關系的圖形,其中每個點代表一個數據樣本。

scatter函數可以接受一系列的xy坐標作為輸入,然后將這些坐標在圖中繪制成散點。

下面是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, 5y坐標為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】對于給定的兩個市場收益率的波動情況數據xy,請利用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

matplotlibbar函數用于繪制柱狀圖,它是一個非常常用的數據可視化工具。

下面是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或者一個類似結構的數據集,xheight參數可以直接從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()來顯示圖像。

以上提供了matplotlibbar函數的詳細介紹和一個簡單的用例。通過使用不同的參數和組合,您可以根據自己的需求繪制出各種類型的柱狀圖。

示例

【例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.boxmatplotlib庫中的一個函數,用于繪制箱線圖。箱線圖是一種統計圖表,用于展示一組數據的分布情況。它顯示了數據的中位數、上下四分位數、最小值和最大值,以及異常值。

箱線圖可以幫助我們了解數據的偏態、離散度和異常值情況。

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
  • whiskerpropswhisker的屬性設置,默認為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')

在這里插入圖片描述

.png)

四、拓展

熱力圖

熱力圖是一種可視化數據的圖表方式,通過不同顏色的區塊來表示數據的密度或強度。熱力圖通常用于顯示熱點、密度分布或者數據趨勢。

在熱力圖中,顏色的深淺表示數據的強度或頻率,通常深色表示高強度或高頻率,淺色表示低強度或低頻率。通過觀察熱力圖的顏色變化,可以直觀地發現數據的分布情況或趨勢。

熱力圖可以用于各種領域,例如地理信息系統(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參數用于指定進行采樣時缺失數據的填充方式。

  • closedlabel參數用于指定進行采樣時邊界的處理方式。

  • 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_adjustmatplotlib中的一個函數,用于調整子圖之間的間距。它可以用于調整子圖布局,使得子圖之間的間距更合適。

函數的語法如下:

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_treescikit-learn庫中DecisionTreeClassifierDecisionTreeRegressor類的一個方法,用于繪制決策樹模型的樹形圖。

使用plot_tree需要先對DecisionTreeClassifierDecisionTreeRegressor類進行訓練,然后傳入已經訓練好的模型對象,以及需要繪制的樹形圖的配置參數。

下面是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)

上述代碼將會繪制出一個決策樹模型的樹形圖,其中每個節點代表一個判斷條件,通過樹形圖可以清晰地了解決策樹的結構和特征的重要性。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15944.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15944.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15944.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Sql Sever刪除數據庫時提示數據庫正在被使用,解決辦法

報錯解釋: 當您嘗試刪除SQL Server中的某個對象(如數據庫、表等)時,如果有程序或進程正在使用該對象,您可能會收到一個錯誤信息,提示該對象正被使用。這通常是因為還有一個或多個數據庫連接仍然保持著對該…

易備數據備份軟件: 快速備份 MySQL\SQL Server\Oracle\泛微 OA 數據庫

易備數據備份軟件支持對 SQL Server、Oracle、MySQL、PostgreSQL、MariaDB、泛微 OA 等數據庫進行快速備份,備份過程不會對任何服務造成中斷。 使用一份授權,可以備份無限量的數據庫,不管數據庫服務器是否在本機、本地網絡、或是遠程網絡。可…

【C++風云錄】光芒背后的功臣:醫療影像處理與醫學成像

打開技術寶庫:從視覺分析到醫學影像 前言 在信息技術的日益發展下,各種開源工具庫的出現大大促進了軟件開發的進步。本文將對六種主要的開放源碼軟件庫進行詳細的介紹和分析,包括其概述,主要功能以及應用實施案例。 歡迎訂閱專欄…

Vitis HLS 學習筆記--控制驅動TLP-處理deadlock

目錄 1. 簡介 2. 代碼解析 2.1 HLS kernel代碼 2.2 查看接口報告 2.3 TestBench 2.4 Dataflow 報告 3. Takeaways 4. 總結 1. 簡介 本文是對《Hardware Acceleration Tutorials: FIFO Sizing for Performance and Avoiding Deadlocks》實驗內容的詳細解釋。 首先需要…

如何實現高內聚低耦合

一、定義 內聚:一個模塊內各元素間,結合的緊密程度。 耦合:模塊之間聯系緊密程度 二、高內聚、低耦合的利弊 1、代碼關系過于緊密,往往改一小段代碼,需要整個項目做很大的改動。所以在實際開發中應該盡量避免過高的…

Python常見面試題(二)——numpy和pandas

一、NumPy和Pandas間的區別與練習 功能定位 NumPy主要用于數值計算,提供了多維數組對象ndarray,支持數組操作、線性代數、隨機數生成等功能。 Pandas則建立在NumPy之上,提供了更高級的數據結構,主要用于數據分析,尤…

自動駕駛場景中的長尾問題怎么解決?

自動駕駛長尾問題是指自動駕駛汽車中的邊緣情況,即發生概率較低的可能場景。感知的長尾問題是當前限制單車智能自動駕駛車輛運行設計域的主要原因之一。自動駕駛的底層架構和大部分技術問題已經被解決,剩下的5%的長尾問題,逐漸成了制約自動駕…

huggingface 筆記:查看GPU占用情況

0 準備部分 0.1 創建虛擬數據 import numpy as npfrom datasets import Datasetseq_len, dataset_size 512, 512 dummy_data {"input_ids": np.random.randint(100, 30000, (dataset_size, seq_len)),"labels": np.random.randint(0, 1, (dataset_size…

學習和分享關于 Vue.js 的路由(vue-router)

學習和分享關于 Vue.js 的路由(vue-router)是一個非常有價值的主題,因為路由是構建單頁應用程序(SPA)的核心部分。本文將介紹 Vue.js 路由的基本概念和實現,并展示一個典型的項目目錄結構。 目錄 Vue.js 路…

【代碼隨想錄訓練營】【Day 29】【回溯-3】| Leetcode 39, 41, 131

【代碼隨想錄訓練營】【Day 29】【回溯-3】| Leetcode 39, 41, 131 需強化知識點 startInex作用:一是處理是否可以有重復值,二是實現縱向遍歷(不能沒有)去重要在數組有序的前提下進行分割問題 題目 39.…

工業控制2D組態界面,丑是丑了點,但非常實用。

工業控制的2D組態界面是用于監控和控制工業過程的界面。它通常具有以下特征: 實時數據顯示:2D組態界面能夠實時顯示傳感器和設備的數據,如溫度、壓力、流量等。這些數據以圖表、儀表盤、數字顯示等形式呈現,使操作人員能夠實時了解…

Android:使用Kotlin搭建MVVM架構模式

一、簡介Android MVVM架構模式 MVVM全稱:Model、View、ViewModel; Model:負責數據的請求、解析、過濾等數據層操作,其中Repository: 提供數據的 API(從本地或者網絡)。View:負責視圖部分展示Vie…

Spring (18)什么是JdbcTemplate

JdbcTemplate 是 Spring 框架提供的一個主要的類,旨在簡化傳統 JDBC 的使用。它處理了諸如連接管理、異常處理等繁瑣的低級任務,讓開發者可以更專注于執行 SQL 語句和處理結果。JdbcTemplate 屬于 Spring JDBC 模塊(spring-jdbc)&…

每日力扣刷題day05(小白簡單題)

文章目錄 2024.5.26(5題)1446.連續字符題解一題解二 2824.統計和小于目標的下標對數目題解一題解二 1768.交替合并字符串題解一題解二題解三 796.旋轉字符串題解一題解二 1304.和為零的 N 個不同整數題解一題解二 2024.5.26(5題) …

快速冪求逆元與逆元

我上一篇博客鏈接寫的是多個數求乘法逆元而快速冪求逆元用于單個數求乘法逆元 逆元是對分數取模用的 對于除法取模不成立,即(a/b)%p≠(a%p/b%p)%p。求逆元的思路:(一般ACM的題目都是對1e97這種素數取模,所以gcd(a,p)1)a*b1(mod p) > b1/a…

[Algorithm][動態規劃][簡單多狀態DP問題][按摩師][打家劫舍Ⅱ][刪除并獲得點數][粉刷房子]詳細講解

目錄 1.按摩師1.題目鏈接2.算法思路詳解3.代碼實現 2.打家劫舍 II1.題目鏈接2.算法思路詳解3.代碼實現 3.刪除并獲得點數1.題目鏈接2.算法思路詳解3.代碼實現 4.粉刷房子1.題目鏈接2.算法思路詳解3.代碼實現 1.按摩師 1.題目鏈接 按摩師 2.算法思路詳解 思路: 確…

大模型提示詞Prompt學習

引言 關于chatGPT的Prompt Engineer,大家肯定耳朵都聽起繭了。但是它的來由?,怎么能用好?很多人可能并不覺得并不是一個問題,或者說認定是一個很快會過時的概念。但其實也不能說得非常清楚(因為覺得沒必要深…

Redis第18講——Redis和Redission實現延遲消息

即使不是做電商業務的同學,也一定知道訂單超時關閉這種業務場景,這個場景大致就是用戶下單后,如果在一定時間內未支付(比如15分鐘、半小時),那么系統就會把這筆訂單給關閉掉。這個功能實現的方式有很多種&a…

unity開發Hololens 制作滑動框

一定要做到最后一步,才會有效果 1、創建空物體 ,并添加組件 創建空物體 命名ScrollingObjectCollection, 添加組件如下圖 下面是各個組件展開的內容 2、在ScrollingObjectCollection 下面創建兩個空物體,分別命名Container、Clipping…

運籌說 第115期 | 排隊論經典例題講解

通過前幾期的學習,我們已經學會了排隊論的基本概念、生滅過程和Poisson過程,等待制排隊模型、混合制排隊模型、其他排隊模型以及排隊系統優的定義與相關求解方法。在實際工作中,我們能發現排隊論在經濟管理中有著許多應用,本期小編…