Matplotlib繪制圖的常用類型
plot(x,y)
plot(x, y)
函數(shù)用于繪制折線圖。折線圖是一種用來展示連續(xù)數(shù)據(jù)之間關(guān)系的圖表類型,適用于表示數(shù)據(jù)隨著一個或多個變量的變化而變化的情況。
具體來說,plot(x, y)
函數(shù)接受兩個參數(shù):
-
x
:表示X軸上的數(shù)據(jù)點的值,通常是一個數(shù)組或列表,表示自變量的取值。 -
y
:表示Y軸上的數(shù)據(jù)點的值,也是一個數(shù)組或列表,表示因變量隨自變量變化的取值。
折線圖會將這些數(shù)據(jù)點連接起來,形成一條或多條線,以展示數(shù)據(jù)的趨勢或變化情況。以下是一些常見的折線圖樣式及其特點:
- 單條折線圖:用于表示單一變量的變化趨勢。可以通過添加數(shù)據(jù)標記點來強調(diào)關(guān)鍵數(shù)據(jù)點。
- 多條折線圖:可以在同一張圖上繪制多條折線,用于比較多個變量之間的趨勢。每條折線可以使用不同的顏色或線型進行區(qū)分。
- 帶標記點的折線圖:通過在折線上添加標記點,可以更清晰地表示數(shù)據(jù)的取值,尤其在數(shù)據(jù)變化明顯的位置。
- 平滑曲線折線圖:使用平滑曲線(如樣條曲線或平滑的多項式擬合曲線)來連接數(shù)據(jù)點,以平滑顯示數(shù)據(jù)的變化趨勢,避免過多的波動。
- 面積圖折線圖:可以通過在折線下方填充顏色,展示數(shù)據(jù)隨時間的累積變化。常用于表示累積數(shù)據(jù),如總收入或總銷量。
- 雙坐標軸折線圖:在同一張圖上繪制兩條折線,分別使用左右兩個不同的Y軸刻度,用于表示不同量綱或變化幅度較大的數(shù)據(jù)。
例如:
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
# 生成數(shù)據(jù)
x = np.linspace(0, 10, 100)
y = 4 + 2 * np.sin(2 * x)
# plot
fig, ax = plt.subplots()
ax.plot(x, y, linewidth=2.0)
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
scatter(x, y)
scatter(x, y)
函數(shù)用于繪制散點圖。散點圖是一種用于展示兩個變量之間關(guān)系的圖表類型,每個數(shù)據(jù)點由兩個數(shù)值(X軸和Y軸上的值)表示,以點的形式在圖表上進行表示。
scatter(x, y)
函數(shù)接受兩個參數(shù):
-
x
:表示X軸上的數(shù)據(jù)點的值,通常是一個數(shù)組或列表,表示自變量的取值。 -
y
:表示Y軸上的數(shù)據(jù)點的值,也是一個數(shù)組或列表,表示因變量的取值。
散點圖通過在坐標系中放置單個數(shù)據(jù)點來展示兩個變量之間的關(guān)系。以下是一些散點圖的特點和用途:
- 相關(guān)性檢測:通過繪制散點圖,可以觀察兩個變量之間的關(guān)系,判斷它們之間是否存在線性相關(guān)性、正相關(guān)還是負相關(guān)。
- 分布情況:散點圖可以用來展示數(shù)據(jù)的分布情況,特別是在兩個維度上都有變化的情況下。
- 聚類分析:當數(shù)據(jù)點在圖上聚集成群時,散點圖可以幫助識別是否存在多個聚類或群集。
- 異常值識別:通過觀察散點圖,可以識別出位于數(shù)據(jù)集中的異常值或離群點。
- 多變量關(guān)系:散點圖也可以用于展示多個變量之間的關(guān)系,通過使用不同的顏色、大小或形狀來表示不同的變量。
比如生成一個顯示汽車速度與制動距離關(guān)系的散點圖,其中每個數(shù)據(jù)點表示一個速度-制動距離的對應(yīng)關(guān)系:
import matplotlib.pyplot as plt
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):汽車速度與制動距離的關(guān)系
speed = [4, 7, 11, 15, 18, 20, 22, 24, 26, 29]
brake_distance = [2, 4, 7, 10, 12, 15, 18, 22, 25, 28]
# 創(chuàng)建散點圖
plt.figure(figsize=(8, 6)) # 設(shè)置圖像大小
plt.scatter(speed, brake_distance, color='blue', marker='o', label='數(shù)據(jù)點') # 繪制散點圖
plt.title('汽車速度與制動距離關(guān)系') # 添加標題
plt.xlabel('速度 (mph)') # 添加X軸標簽
plt.ylabel('制動距離 (ft)') # 添加Y軸標簽
plt.legend() # 顯示圖例
plt.grid(True) # 添加網(wǎng)格線
plt.show() # 顯示圖像
在使用scatter(x, y)
函數(shù)時,還可以通過設(shè)置參數(shù)來定制散點圖的外觀,如點的大小、顏色、標記形狀等,以便更好地傳達數(shù)據(jù)的信息。
例如生成一個具有隨機數(shù)據(jù)點、自定義樣式和點大小、顏色的散點圖:
import matplotlib.pyplot as plt
import numpy as np
# 創(chuàng)建數(shù)據(jù)
np.random.seed(3)
x = 4 + np.random.normal(0, 2, 24) # 生成24個隨機數(shù),以4為中心,標準差為2
y = 4 + np.random.normal(0, 2, len(x)) # 生成與x相同數(shù)量的隨機數(shù),以4為中心,標準差為2
# 設(shè)置點的大小和顏色
sizes = np.random.uniform(15, 80, len(x)) # 生成在15和80之間的隨機數(shù)作為點的大小
colors = np.random.uniform(15, 80, len(x)) # 生成在15和80之間的隨機數(shù)作為顏色
# 繪制散點圖
fig, ax = plt.subplots() # 創(chuàng)建一個圖像和坐標軸的組合
ax.scatter(x, y, s=sizes, c=colors, vmin=0, vmax=100) # 繪制散點圖,設(shè)置點的大小和顏色的范圍
# 設(shè)置坐標軸范圍和刻度
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show() # 顯示圖像
bar(x, height)
bar(x, height)
函數(shù)用于繪制條形圖(柱狀圖)。條形圖是一種常用的數(shù)據(jù)可視化方式,用于展示不同類別或組之間的比較。每個條形的高度表示與該類別或組相關(guān)聯(lián)的數(shù)值。
bar(x, height)
函數(shù)接受兩個主要參數(shù):
-
x
:表示條形的位置,通常是一個數(shù)組或列表,表示每個條形的位置。 -
height
:表示每個條形的高度,也是一個數(shù)組或列表,表示每個條形的數(shù)值。
以下是一些關(guān)于bar(x, height)
函數(shù)的特點和用途:
- 分類比較:條形圖適用于對不同類別或組之間的數(shù)值進行比較。每個條形代表一個類別,其高度表示與該類別相關(guān)的數(shù)值。
- 單個數(shù)據(jù)集內(nèi)的分布:可以使用條形圖來展示單個數(shù)據(jù)集內(nèi)不同類別的分布情況,比如一個時間段內(nèi)不同產(chǎn)品的銷售數(shù)量。
- 多組數(shù)據(jù)比較:通過在同一張圖上繪制多組條形,可以方便地比較不同組的數(shù)據(jù),以查看它們之間的差異。
- 標記數(shù)據(jù)點:可以在每個條形上方添加數(shù)值標簽,以明確顯示每個類別對應(yīng)的具體數(shù)值。
- 堆疊條形圖:通過在同一位置堆疊多個條形,可以展示多個維度的數(shù)據(jù),同時呈現(xiàn)每個類別內(nèi)部的分布。
- 分組條形圖:將每個類別內(nèi)的不同組的條形并列顯示,便于比較不同組之間的數(shù)值。
例如創(chuàng)建一個條形圖用于比較不同城市的人口數(shù)量和GDP:
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):不同城市的人口數(shù)量和GDP
cities = ['City A', 'City B', 'City C', 'City D', 'City E']
population = [1200000, 850000, 1500000, 2000000, 800000]
gdp = [250000, 180000, 320000, 400000, 150000]
# 設(shè)置條形圖的位置
x_positions = np.arange(len(cities))
# 創(chuàng)建條形圖
fig, ax1 = plt.subplots()
# 繪制人口數(shù)量的條形
ax1.bar(x_positions - 0.2, population, width=0.4, align='center', color='b', label='人口數(shù)量')
# 創(chuàng)建第二個坐標軸以顯示GDP數(shù)據(jù)
ax2 = ax1.twinx()
ax2.bar(x_positions + 0.2, gdp, width=0.4, align='center', color='r', label='GDP')
# 設(shè)置圖例和標簽
ax1.set_xticks(x_positions)
ax1.set_xticklabels(cities)
ax1.set_xlabel('城市')
ax1.set_ylabel('人口數(shù)量')
ax2.set_ylabel('GDP')
# 合并圖例
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, loc='upper left')
plt.title('城市人口數(shù)量和GDP對比')
plt.show()
每個城市在圖中由兩個相鄰的條形表示,左側(cè)的藍色條形代表人口數(shù)量,右側(cè)的紅色條形代表GDP。通過雙坐標軸的設(shè)計,使得兩種數(shù)據(jù)可以在同一圖中進行比較,而X軸上的城市名稱使得每個條形與相應(yīng)城市相關(guān)聯(lián)。這個例子演示了如何處理具有多個數(shù)據(jù)集和雙坐標軸的情況。
stem(x,y)
stem(x, y)
函數(shù)用于繪制莖葉圖(stem plot),也稱為蒂葉圖。莖葉圖是一種用于可視化數(shù)據(jù)分布和變化的圖表類型,特別適用于展示數(shù)據(jù)的離散值以及它們的頻率分布。
stem(x, y)
函數(shù)接受兩個參數(shù):
-
x
:表示X軸上的數(shù)據(jù)點的值,通常是一個數(shù)組或列表,表示數(shù)據(jù)點的位置。 -
y
:表示Y軸上的數(shù)據(jù)點的值,也是一個數(shù)組或列表,表示數(shù)據(jù)點的取值。
莖葉圖的繪制方式是:對每個數(shù)據(jù)點,將其拆分為莖(高位部分)和葉(個位部分),然后在圖表上繪制一個垂直線(莖)和水平線(葉),以表示數(shù)據(jù)的分布。
莖葉圖的特點和用途:
- 數(shù)據(jù)展示:莖葉圖可用于展示離散數(shù)據(jù)的取值情況,更能突顯數(shù)據(jù)的分布。
- 頻率分布:通過莖葉圖,可以直觀地查看數(shù)據(jù)的頻率分布,有助于發(fā)現(xiàn)數(shù)據(jù)的模式和趨勢。
- 離群值識別:莖葉圖可以幫助識別離群值,這些值可能在圖表上單獨突出顯示。
- 數(shù)據(jù)比較:通過繪制多個數(shù)據(jù)集的莖葉圖,可以方便地比較它們之間的分布。
例如:
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):隨機生成一組數(shù)據(jù)
data = np.array([21, 35, 22, 18, 26, 39, 29, 28, 23, 35])
# 創(chuàng)建莖葉圖
plt.stem(data)
# 添加標題和標簽
plt.title('莖葉圖示例')
plt.xlabel('數(shù)據(jù)索引')
plt.ylabel('數(shù)據(jù)值')
plt.show()
step(x,y)
step(x, y)
函數(shù)用于繪制階梯圖(step plot),也被稱為階梯線圖或臺階圖。階梯圖是一種用于可視化離散數(shù)據(jù)的圖表類型,其特點是數(shù)據(jù)點之間通過垂直和水平線段連接,而不是平滑的曲線。
step(x, y)
函數(shù)接受兩個參數(shù):
-
x
:表示X軸上的數(shù)據(jù)點的值,通常是一個數(shù)組或列表,表示自變量的取值。 -
y
:表示Y軸上的數(shù)據(jù)點的值,也是一個數(shù)組或列表,表示因變量的取值。
階梯圖的繪制方式是:對每個數(shù)據(jù)點,將其前一個數(shù)據(jù)點的X值作為起點,當前數(shù)據(jù)點的Y值作為終點,連接這兩個點。這樣,就可以形成一系列水平線段和垂直線段。
階梯圖的特點和用途:
- 數(shù)據(jù)展示:階梯圖適用于展示離散數(shù)據(jù)點之間的變化趨勢,尤其適用于時間序列數(shù)據(jù)。
- 數(shù)據(jù)步進:通過階梯圖,可以更清晰地表示數(shù)據(jù)從一個離散點到另一個離散點的變化。
- 模擬變化:階梯圖可用于模擬連續(xù)變量在離散時間或事件點上的變化,如模擬某個值在不同時間段內(nèi)的變化。
例如:
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):模擬溫度變化
time = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
temperature = np.array([20, 22, 24, 25, 23, 22, 21, 20, 19, 18])
# 創(chuàng)建階梯圖
plt.step(time, temperature, where='mid')
# 添加標題和標簽
plt.title('溫度變化階梯圖')
plt.xlabel('時間')
plt.ylabel('溫度 (°C)')
plt.show()
在這個示例圖中,time
數(shù)組表示時間點,temperature
數(shù)組表示相應(yīng)時間點的溫度。通過plt.step(time, temperature, where='mid')
語句,我們繪制了這些溫度變化的階梯圖。where='mid'
參數(shù)指定了線段連接到每個數(shù)據(jù)點的中間位置。其他部分用于添加標題和標簽,最后使用plt.show()
顯示圖像。這個示例演示了如何使用step(x, y)
函數(shù)繪制階梯圖,以展示離散數(shù)據(jù)的變化趨勢。
fill_between(x, y1, y2)
fill_between(x, y1, y2)
函數(shù)用于在兩個Y軸數(shù)據(jù)序列之間填充顏色,通常用于表示兩個數(shù)據(jù)序列之間的區(qū)域或范圍。這個函數(shù)可以用于創(chuàng)建各種圖表,如誤差范圍圖、置信區(qū)間圖等。
fill_between(x, y1, y2)
函數(shù)接受三個參數(shù):
-
x
:表示X軸上的數(shù)據(jù)點的值,通常是一個數(shù)組或列表,表示自變量的取值。 -
y1
:表示Y軸上的數(shù)據(jù)點的值,也是一個數(shù)組或列表,表示第一個數(shù)據(jù)序列的取值。 -
y2
:表示Y軸上的數(shù)據(jù)點的值,也是一個數(shù)組或列表,表示第二個數(shù)據(jù)序列的取值。
fill_between
函數(shù)會在y1
和y2
之間的區(qū)域填充顏色,從而突出兩個數(shù)據(jù)序列之間的差異或范圍。
fill_between
函數(shù)的特點和用途:
-
數(shù)據(jù)區(qū)間表示:
fill_between
函數(shù)非常適用于展示數(shù)據(jù)序列之間的區(qū)間、范圍或誤差。 - 誤差范圍圖:通過填充兩個數(shù)據(jù)序列之間的區(qū)域,可以展示測量值的誤差范圍,幫助理解數(shù)據(jù)的不確定性。
-
置信區(qū)間圖:可以使用
fill_between
來顯示置信區(qū)間,即表達數(shù)據(jù)的預(yù)測范圍。
在下面這個股票價格波動圖的例子中,fill_between
函數(shù)的目的是用于將股票價格的上限和下限之間的區(qū)域填充顏色,以突出價格的波動范圍:
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):股票價格走勢和價格波動范圍
days = np.arange(1, 11)
stock_prices = [100, 105, 110, 108, 112, 115, 120, 118, 125, 123]
price_range = [4, 3, 5, 3, 4, 3, 4, 3, 5, 4]
# 創(chuàng)建股票價格波動圖
plt.plot(days, stock_prices, color='b', marker='o', label='股票價格')
plt.fill_between(days, np.subtract(stock_prices, price_range), np.add(stock_prices, price_range), color='lightblue', alpha=0.3, label='價格波動范圍')
# 添加標題和標簽
plt.title('股票價格走勢和價格波動范圍')
plt.xlabel('天數(shù)')
plt.ylabel('價格')
plt.legend()
plt.show()
首先,我們有每天的股票價格數(shù)據(jù)列表 stock_prices
,以及每天的價格波動范圍列表 price_range
。對于每一天,我們通過從相應(yīng)的 stock_prices
中減去 price_range
來計算下限值,通過加上 price_range
來計算上限值。這樣,我們獲得了每天股票價格的下限和上限。
然后,使用 plt.fill_between()
函數(shù),我們將這些下限和上限之間的區(qū)域進行填充。fill_between
函數(shù)的第一個參數(shù)是 X 軸的數(shù)據(jù),這里是 days
,第二個參數(shù)是 Y 軸的下限,第三個參數(shù)是 Y 軸的上限。這使得函數(shù)知道在哪個范圍內(nèi)填充顏色。
stackplot(x, y)
stackplot(x, y)
函數(shù)用于繪制堆疊區(qū)域圖(stacked area plot),也稱為堆積面積圖。堆疊區(qū)域圖適用于展示多個數(shù)據(jù)序列在相同X軸上的分布情況,并突出不同數(shù)據(jù)序列的累積貢獻。
stackplot(x, y)
函數(shù)接受兩個參數(shù):
-
x
:表示X軸上的數(shù)據(jù)點的值,通常是一個數(shù)組或列表,表示自變量的取值。 -
y
:一個列表(或多維數(shù)組)的列表,表示每個數(shù)據(jù)序列在各個X值上的高度。多個數(shù)據(jù)序列將在圖表上堆疊顯示。
堆疊區(qū)域圖的繪制方式是:從下到上,按照給定的數(shù)據(jù)序列順序,將每個數(shù)據(jù)序列的高度在X軸上進行累積疊加。
堆疊區(qū)域圖的特點和用途:
- 多個序列比較:堆疊區(qū)域圖適用于比較多個數(shù)據(jù)序列之間的分布,可以突出每個數(shù)據(jù)序列的相對貢獻。
- 部分與整體關(guān)系:可以用于展示每個部分對于整體的貢獻,例如市場份額、不同產(chǎn)品的銷售構(gòu)成等。
- 分布變化:通過展示堆疊的區(qū)域,可以清楚地看到各個數(shù)據(jù)序列在不同X值上的分布變化。
例如:
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):不同年齡段的人口構(gòu)成
age_groups = ['0-10', '11-20', '21-30', '31-40', '41-50', '51-60', '61+']
male_population = [1500, 2200, 3200, 3000, 2800, 2000, 1800]
female_population = [1400, 2100, 3100, 2900, 2700, 1900, 1700]
other_population = [100, 150, 200, 150, 100, 50, 30]
# 創(chuàng)建人口構(gòu)成堆疊區(qū)域圖
plt.stackplot(age_groups, male_population, female_population, other_population,
labels=['男性', '女性', '其他'], colors=['b', 'r', 'g'], alpha=0.7)
# 添加標題和標簽
plt.title('不同年齡段的人口構(gòu)成')
plt.xlabel('年齡段')
plt.ylabel('人口數(shù)量')
plt.legend(loc='upper right')
plt.show()
在這個示例中使用plt.stackplot()
函數(shù)繪制了人口構(gòu)成的堆疊區(qū)域圖,每個數(shù)據(jù)序列在X軸上疊加顯示,通過labels
參數(shù)添加圖例標簽,colors
參數(shù)設(shè)置不同顏色,alpha
參數(shù)設(shè)置填充顏色的透明度,以突出不同年齡段的人口構(gòu)成情況。通過比較不同性別和其他人口在不同年齡段的分布,可以更好地了解人口構(gòu)成的特點和變化趨勢。
imshow(Z)
imshow(Z)
函數(shù)用于顯示一個二維數(shù)組(或矩陣)Z
,將其表示為彩色或灰度圖像。這個函數(shù)常用于圖像處理、數(shù)據(jù)可視化、熱圖等應(yīng)用場景。
imshow(Z)
函數(shù)接受一個參數(shù):
-
Z
:一個二維數(shù)組,表示圖像的像素值或數(shù)據(jù)矩陣。它可以是灰度圖像、彩色圖像的某個通道,或者表示其他數(shù)據(jù)的矩陣。
imshow
函數(shù)的特點和用途:
-
圖像顯示:
imshow
函數(shù)可用于將二維數(shù)組顯示為圖像,通過不同的像素值映射到不同的顏色,形成可視化結(jié)果。 -
熱圖:當
Z
是一個數(shù)據(jù)矩陣時,imshow
函數(shù)可以用于繪制熱圖,通過不同的數(shù)據(jù)值映射到不同的顏色,幫助顯示數(shù)據(jù)的分布情況。 -
圖像處理:在圖像處理中,可以使用
imshow
來顯示圖像的各種處理結(jié)果,如濾波、邊緣檢測等。
以繪制熱圖(heatmap)為例。熱圖常用于顯示矩陣數(shù)據(jù)的分布情況,其中矩陣的每個元素通過顏色來表示其值的大?。?/p>
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):矩陣數(shù)據(jù)表示數(shù)據(jù)強度
matrix_data = np.random.random((10, 10)) # 10x10的隨機矩陣數(shù)據(jù)
# 顯示熱圖
plt.imshow(matrix_data, cmap='hot', origin='upper')
# 添加顏色條
plt.colorbar()
# 添加標題和標簽
plt.title('數(shù)據(jù)強度熱圖')
plt.xlabel('列')
plt.ylabel('行')
plt.show()
對于這個示例,matrix_data
是一個隨機生成的10x10矩陣,表示不同位置的數(shù)據(jù)強度。通過使用imshow(matrix_data, cmap='hot', origin='upper')
,將矩陣數(shù)據(jù)繪制成了一個熱圖,其中不同顏色表示不同的數(shù)據(jù)強度。cmap
參數(shù)指定了使用熱色彩映射,origin
參數(shù)指定了坐標原點在圖像的上方。
hist(x)
hist(x)
函數(shù)用于繪制直方圖,用于展示數(shù)據(jù)的分布情況,特別是連續(xù)型數(shù)據(jù)的頻率分布。直方圖將數(shù)據(jù)范圍劃分為多個區(qū)間(稱為“箱子”或“bin”),然后統(tǒng)計每個區(qū)間中數(shù)據(jù)的數(shù)量或頻率。
hist(x)
函數(shù)接受一個參數(shù):
-
x
:一個一維數(shù)組或列表,表示要繪制直方圖的數(shù)據(jù)。
hist
函數(shù)的特點和用途:
-
數(shù)據(jù)分布可視化:
hist
函數(shù)可以將數(shù)據(jù)的分布情況以直觀的方式展示出來,幫助了解數(shù)據(jù)的中心趨勢、離散程度以及異常值等。 -
頻率分布:通過將數(shù)據(jù)分成多個區(qū)間,
hist
函數(shù)可以顯示每個區(qū)間內(nèi)數(shù)據(jù)的頻率,幫助你分析數(shù)據(jù)在不同值范圍內(nèi)的密度。 - 分析分布形狀:直方圖的形狀可以提供關(guān)于數(shù)據(jù)分布是否對稱、偏斜或多峰等信息。
例如分析學生考試成績分布情況:
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):學生考試成績
exam_scores = np.random.randint(0, 100, 200) # 隨機生成200個考試成績
# 繪制直方圖
plt.hist(exam_scores, bins=10, color='green', edgecolor='black')
# 添加標題和標簽
plt.title('學生考試成績分布')
plt.xlabel('分數(shù)范圍')
plt.ylabel('學生人數(shù)')
plt.show()
使用plt.hist(exam_scores, bins=10, color='green', edgecolor='black')
函數(shù)繪制了直方圖,bins
參數(shù)指定了要使用的區(qū)間數(shù)量,color
參數(shù)設(shè)置了柱子的填充顏色,edgecolor
參數(shù)設(shè)置了柱子的邊框顏色。
pie(x)
pie(x)
函數(shù)用于繪制餅圖(pie chart),用于顯示數(shù)據(jù)的相對比例。餅圖通過將數(shù)據(jù)按照不同的比例分成扇形,以表示各個部分在整體中的貢獻。餅圖常用于展示分類數(shù)據(jù)的分布情況。
pie(x)
函數(shù)接受一個參數(shù):
-
x
:一個包含各個部分比例的一維數(shù)組或列表,表示要繪制餅圖的數(shù)據(jù)。
pie
函數(shù)的特點和用途:
-
數(shù)據(jù)比例:
pie
函數(shù)適用于展示不同部分在整體中的比例關(guān)系,特別是當你關(guān)注數(shù)據(jù)的相對貢獻時。 - 數(shù)據(jù)分類:餅圖可以用于展示數(shù)據(jù)的分類,各個扇形區(qū)域表示不同的數(shù)據(jù)類別。
- 直觀顯示:餅圖提供了一種直觀的方式來顯示相對比例,使觀察者能夠迅速理解數(shù)據(jù)的分布情況。
比如需要進行能源分析,了解一個城市的不同能源類型在總能源供應(yīng)中的比例,以及不同能源對環(huán)境的影響:
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 示例數(shù)據(jù):城市能源供應(yīng)結(jié)構(gòu)比例
energy_sources = ['煤炭', '石油', '天然氣', '核能', '可再生能源']
proportions = [30, 25, 20, 10, 15] # 各個能源的供應(yīng)比例
# 繪制餅圖
plt.pie(proportions, labels=energy_sources, autopct='%1.1f%%', startangle=140, colors=['gray', 'pink', 'blue', 'green', 'orange'])
# 添加標題
plt.title('城市能源供應(yīng)結(jié)構(gòu)')
plt.axis('equal') # 使餅圖保持圓形
plt.show()
在上圖中,使用plt.pie(proportions, labels=energy_sources, autopct='%1.1f%%', startangle=140, colors=['gray', 'black', 'blue', 'green', 'orange'])
函數(shù)繪制了餅圖,labels
參數(shù)指定了每個扇形的標簽,autopct
參數(shù)設(shè)置了百分比顯示格式,startangle
參數(shù)設(shè)置了餅圖的起始角度,colors
參數(shù)設(shè)置了每個扇形的顏色。
contour(X, Y, Z)和contourf(X, Y, Z)
contour(X, Y, Z)
和contourf(X, Y, Z)
函數(shù)用于繪制等高線圖(contour plot)和填充等高線圖(filled contour plot),用于表示二維數(shù)據(jù)的等高線分布。等高線圖在可視化數(shù)據(jù)表面的高度或數(shù)值分布時非常有用。
這兩個函數(shù)的參數(shù)如下:
-
X
和Y
:表示二維數(shù)據(jù)的網(wǎng)格點坐標,通常是由numpy.meshgrid
函數(shù)生成的兩個二維數(shù)組。 -
Z
:一個與X
和Y
對應(yīng)的二維數(shù)組,表示要繪制等高線的數(shù)據(jù)值。
contour(X, Y, Z)
函數(shù)的特點和用途:
-
數(shù)據(jù)輪廓:
contour
函數(shù)用于繪制等高線圖,其中等高線表示數(shù)據(jù)表面上的高度或數(shù)值分布。 - 輪廓線:繪制的等高線通過線條表示不同數(shù)據(jù)值的輪廓,顏色通常相同。
- 數(shù)據(jù)分布:等高線圖能夠清晰地展示數(shù)據(jù)在二維空間中的分布情況,特別適用于顯示地形高度、溫度分布等數(shù)據(jù)。
contourf(X, Y, Z)
函數(shù)的特點和用途:
-
填充區(qū)域:
contourf
函數(shù)用于繪制填充等高線圖,其中不同等高線之間的區(qū)域被填充顏色,以突出數(shù)據(jù)值的分布。 -
顏色映射:填充區(qū)域的顏色根據(jù)數(shù)據(jù)值的大小來映射,可以通過
cmap
參數(shù)指定顏色映射。 - 數(shù)據(jù)分布:填充等高線圖可以更直觀地顯示數(shù)據(jù)值在不同區(qū)域的分布,特別適用于表示溫度、濃度等數(shù)據(jù)。
假設(shè)想要繪制一個地區(qū)的地形高度分布圖,包括等高線圖和填充等高線圖,以便更好地理解地勢起伏情況:
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置全局字體為支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微軟雅黑或其他中文字體
# 設(shè)置負號為標準的減號
plt.rcParams['axes.unicode_minus'] = False
# 創(chuàng)建網(wǎng)格點坐標
x = np.linspace(-5, 5, 300)
y = np.linspace(-5, 5, 300)
X, Y = np.meshgrid(x, y)
# 示例數(shù)據(jù):地形高度
Z = np.sin(np.sqrt(X**2 + Y**2)) + np.cos(np.sqrt(X**2 + Y**2))
# 創(chuàng)建繪圖區(qū)域
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
# 繪制等高線圖
contour1 = ax1.contour(X, Y, Z, levels=20, colors='black')
ax1.set_title('等高線圖')
ax1.set_xlabel('X軸')
ax1.set_ylabel('Y軸')
# 繪制填充等高線圖
contourf = ax2.contourf(X, Y, Z, levels=20, cmap='viridis')
ax2.set_title('填充等高線圖')
ax2.set_xlabel('X軸')
ax2.set_ylabel('Y軸')
# 添加顏色條
cbar = plt.colorbar(contourf, ax=ax2)
cbar.set_label('高度')
plt.tight_layout()
plt.show()
注意,以上只是一些基本的Matplotlib所能繪制的圖形類型,它還可以與很多其他庫結(jié)合使用,繪制更多更加復雜的圖形。
題外話
感謝你能看到最后,給大家準備了一些福利!
感興趣的小伙伴,贈送全套Python學習資料,包含面試題、簡歷資料等具體看下方。
??CSDN大禮包??:全網(wǎng)最全《Python學習資料》免費贈送??!(安全鏈接,放心點擊)
一、Python所有方向的學習路線
Python所有方向的技術(shù)點做的整理,形成各個領(lǐng)域的知識點匯總,它的用處就在于,你可以按照下面的知識點去找對應(yīng)的學習資源,保證自己學得較為全面。
二、Python兼職渠道推薦*
學的同時助你創(chuàng)收,每天花1-2小時兼職,輕松稿定生活費.
三、最新Python學習筆記
當我學到一定基礎(chǔ),有自己的理解能力的時候,會去閱讀一些前輩整理的書籍或者手寫的筆記資料,這些筆記詳細記載了他們對一些技術(shù)點的理解,這些理解是比較獨到,可以學到不一樣的思路。
四、實戰(zhàn)案例
紙上得來終覺淺,要學會跟著視頻一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰(zhàn)案例來學習。

??CSDN大禮包??:全網(wǎng)最全《Python學習資料》免費贈送??!(安全鏈接,放心點擊)文章來源:http://www.zghlxwxcb.cn/news/detail-769430.html
若有侵權(quán),請聯(lián)系刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-769430.html
到了這里,關(guān)于Python中Matplotlib庫的使用(三)—— Matplotlib繪制圖的常用類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!