Skip to content

数据可视化

数据可视化是将数据转换为图形或图表的过程,帮助理解和分析数据。

Matplotlib

基础图表

python
import matplotlib.pyplot as plt
import numpy as np

# 折线图
x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y, label='sin(x)', color='blue', linewidth=2)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Sine Wave')
plt.legend()
plt.grid(True)
plt.show()

# 柱状图
categories = ['A', 'B', 'C', 'D']
values = [30, 45, 25, 60]

plt.bar(categories, values, color=['red', 'green', 'blue', 'orange'])
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart')
plt.show()

# 散点图
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50)
sizes = 100 * np.random.rand(50)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Scatter Plot')
plt.colorbar()
plt.show()

Seaborn

统计图表

python
import seaborn as sns
import pandas as pd

# 加载数据集
tips = sns.load_dataset('tips')

# 直方图
sns.histplot(data=tips, x='total_bill', kde=True)
plt.title('Total Bill Distribution')
plt.show()

# 箱线图
sns.boxplot(data=tips, x='day', y='total_bill')
plt.title('Total Bill by Day')
plt.show()

# 热力图
corr = tips.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('Correlation Heatmap')
plt.show()

# 线性回归图
sns.regplot(data=tips, x='total_bill', y='tip')
plt.title('Total Bill vs Tip')
plt.show()

# 成对关系图
sns.pairplot(tips, hue='sex')
plt.show()

Plotly

交互式图表

python
import plotly.express as px

# 交互式散点图
df = px.data.iris()
fig = px.scatter(df, x='sepal_width', y='sepal_length', 
                 color='species', size='petal_length',
                 hover_data=['petal_width'])
fig.show()

# 交互式折线图
df = px.data.stocks()
fig = px.line(df, x='date', y='GOOG', title='Google Stock Price')
fig.show()

# 交互式饼图
df = px.data.tips()
fig = px.pie(df, values='tip', names='day', title='Tips by Day')
fig.show()

# 交互式直方图
fig = px.histogram(df, x='total_bill', color='sex', title='Total Bill Distribution')
fig.show()

# 交互式3D散点图
fig = px.scatter_3d(df, x='total_bill', y='tip', z='size',
                    color='sex', title='3D Scatter Plot')
fig.show()

可视化最佳实践

选择合适的图表类型

数据类型推荐图表
趋势变化折线图
比较数据柱状图、条形图
数据分布直方图、箱线图
相关性散点图、热力图
比例关系饼图、环形图

设计原则

  1. 简洁清晰: 避免过多装饰元素
  2. 色彩搭配: 使用和谐的配色方案
  3. 标签明确: 添加清晰的标题和轴标签
  4. 数据突出: 重点数据使用醒目的颜色或样式
  5. 交互友好: 对于复杂图表,添加交互功能