面積圖是數據可視化中的一個有效工具,用于說明時間上的關系和趨勢。它們提供了一種全面的、視覺上迷人的方法,通過熟練地將折線圖的可讀性與填充區域的吸引力相結合來呈現數值數據。
在本文中,我們將學習更多關于在Python中創建面積折線圖的知識。面積圖為數據可視化提供了一個有價值的工具,提供了一種清晰而引人入勝的方式來傳達隨著時間的推移的趨勢和關系。
什么是面積圖?
面積線圖,也稱為面積圖或堆積面積圖,是一種數據可視化技術,用于表示隨時間或跨類別的數據。它是基本折線圖的擴展,當您想要顯示整體的組成、沿著單個組件以及它們如何隨時間或跨類別變化時,它特別有用。在本文中,我們將探索如何使用matplotlib庫在Python中創建面積線圖,并解釋它們在可視化數據中的重要性。
以下是面積線圖的關鍵組成部分和特征。
X軸:水平軸代表自變量,通常是時間或類別。它是一種連續或分類量表,為數據點提供背景。
Y軸:垂直軸表示因變量,通常是一個數值,用于度量您正在可視化的內容的數量或大小。
線:面積線圖中的各條線表示不同的類別、組或構件。每一行從基線(通常是X軸)開始,向上顯示該類別或組件在特定時間點或沿著類別軸的值。
區域填充:線條和基線之間的區域用顏色填充,使其在視覺上與眾不同。該區域的顏色通常用于表示它所代表的類別或組件。
堆疊:在堆疊面積圖中,每條線都堆疊在前一條線的頂部。這種疊加說明了總體如何隨時間或跨類別變化,以及每個類別對整體的貢獻。
創建面積圖
首先,讓我們使用Python制作一個基本的面積線圖。為了創建圖并顯示各種類別如何隨時間變化,我們將使用Matplotlib。
import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'y': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10]
})# Create the area line plot
plt.fill_between(df['x'], df['y'], color='blue', alpha=0.2)
plt.plot(df['x'], df['y'], color='red', alpha=0.5, linewidth=0.9)plt.title("Area Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()
帶標記和標簽的面積圖
添加更多功能,使其更具吸引力
- 導入必要的庫:pandas用于數據操作,matplotlib.pyplot用于數據可視化。
- 準備示例數據:創建一個DataFrame,其中’x’和’y’列包含數值。
- 生成面積線圖:使用plt.fill_between()創建半透明的藍色面積線圖,使用plt.plot()創建微弱的紅色線。
- 使用標記和標簽增強圖:使用plt.scatter()在數據點處添加紅色圓形標記(s=30)。使用plt.text()在每個數據點上方添加黑色標簽,將其水平居中(ha =‘center’)并在底部垂直對齊(va =‘bottom’)。自定義軸、添加標題并顯示繪圖。
import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'y': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10]
})# Create the area line plot
plt.fill_between(df['x'], df['y'], color='blue', alpha=0.5)
plt.plot(df['x'], df['y'], color='red', alpha=0.1)# Add red markers at data points
plt.scatter(df['x'], df['y'], color='red', s=30)# Add labels above data points
for i, row in df.iterrows():plt.text(row['x'], row['y'], str(row['y']), ha='center', va='bottom', color='black', size=10)plt.title("Area Line Plot with Markers and Labels")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()
堆疊面積圖
- 導入必要的庫:pandas用于數據操作,matplotlib.pyplot用于數據可視化。
- 準備示例數據:創建一個DataFrame,其中包含“x”、“Category A”、“Category B”和“Category C”列,列中包含數值。
- 定義自定義顏色:定義要用于每個類別的顏色列表(“黃色”、“紫色”、“粉紅色”)。
- 生成堆疊面積線圖:使用plt.stackplot()創建具有定義的顏色和透明度的堆疊面積線圖。此外,使用不同的顏色、線寬和透明度為每個類別繪制單獨的線條。添加標簽、自定義軸并顯示繪圖。
import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'Category A': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10],'Category B': [2, 4, 3, 5, 6, 8, 7, 9, 10, 11],'Category C': [3, 5, 4, 6, 7, 9, 8, 10, 11, 12]
})# Define custom colors for each category
colors = ['yellow', 'purple', 'pink']# Create the stacked area line plot with custom colors
plt.stackplot(df['x'], df['Category A'], df['Category B'], df['Category C'], colors=colors, alpha=0.7)# Plot lines for each category with custom colors
plt.plot(df['x'], df['Category A'], color='blue', alpha=0.5, linewidth=0.9)
plt.plot(df['x'], df['Category B'], color='green', alpha=0.5, linewidth=0.9)
plt.plot(df['x'], df['Category C'], color='red', alpha=0.5, linewidth=0.9)plt.title("Stacked Area Line Plot with Custom Colors")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.legend()
plt.show()
線間填充
- 導入必要的庫:matplotlib.pyplot用于數據可視化,numpy用于數值運算。
- 準備樣本數據:使用np.linspace生成x軸值,并使用sin和cos函數計算相應的y軸值。
- 創建繪圖元素:使用plt.subplots()創建一個圖形和軸,并使用ax.plot()繪制兩條具有不同顏色和標簽的線。
- 線間填充:使用ax.fill_between()以特定顏色和透明度填充線條之間的區域,并應用條件和插值。添加標簽、自定義軸并顯示繪圖。
import matplotlib.pyplot as plt
import numpy as np# Sample data for demonstration
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)# Create a figure and axis
fig, ax = plt.subplots()# Plot the two lines
ax.plot(x, y1, label='Line 1', color='blue')
ax.plot(x, y2, label='Line 2', color='green')# Fill the area between the lines
ax.fill_between(x, y1, y2, where=(y1 > y2), interpolate=True, alpha=0.5, color='yellow', label='Fill Area')# Customize the plot
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_title('Filling Between Lines')
ax.legend()# Display the plot
plt.show()
總結
總而言之,面積圖可有效顯示數據隨時間或跨類別的趨勢、比較和部分與整體的關系。它們提供了一種視覺上引人注目的方式來理解不同的組件如何對整體做出貢獻,以及這些貢獻如何在選定的軸(時間或類別)上發生變化。