1. 堆叠面积图(Stacked Area Chart)
用途:展示多个类别的数据随时间(或有序变量)的累积变化趋势,强调部分与整体的关系。
代码如下:
import matplotlib.pyplot as plt
import numpy as np
categories = ['A', 'B', 'C', 'D']
time_points = np.arange(1, 7) # 时间轴
data = np.array([
[10, 12, 15, 18, 20, 25], # 类别A
[5, 8, 10, 12, 15, 18], # 类别B
[3, 5, 7, 9, 11, 14], # 类别C
[2, 3, 4, 5, 6, 8] # 类别D
])
# 绘制堆叠面积图
plt.figure(figsize=(10, 6))
plt.stackplot(time_points, data, labels=categories, alpha=0.7)
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc='upper left')
plt.grid(True, linestyle='--')
plt.show()
-
stackplot()
函数实现堆叠效果,自动计算累积高度。 -
alpha
控制透明度,避免遮挡。 -
适合展示总量的组成变化(如市场份额、资源分配)。
2. 散点图(Scatter Plot)
用途:展示两个连续变量之间的关系,常用于发现相关性、聚类或异常值。
import seaborn as sns
import pandas as pd
np.random.seed(42)
df = pd.DataFrame({
'X': np.random.normal(0, 1, 100),
'Y': np.random.normal(0, 1, 100),
'Category': np.random.choice(['Group1', 'Group2', 'Group3'], 100)
})
# 使用seaborn绘制散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(
data=df,
x='X',
y='Y',
hue='Category', # 按类别着色
style='Category', # 按类别标记形状
s=100, # 点大小
alpha=0.8
)
plt.title('Scatter Plot with Grouping')
sns.regplot(data=df, x='X', y='Y', scatter=False, ci=None, color='gray') # 添加回归线
plt.grid(True)
plt.show()
-
hue
参数用颜色区分类别,style
可进一步用形状区分。 -
s
控制点大小,alpha
控制透明度。 -
regplot()
可叠加趋势线(需关闭散点子图)。 -
适合分析变量间关系(如收入 vs 消费)。