折线图与柱状图
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(2020, 2024)
y = [120, 135, 98, 156]
plt.figure(figsize=(10,6))
plt.plot(x, y, marker='o', linestyle='--', color='#2c7fb8', label='销售额')
plt.bar(x, y, alpha=0.3, color='#7fcdbb')
plt.title('年度销售趋势', fontsize=14)
plt.xlabel('年份')
plt.ylabel('金额(万元)')
plt.legend()
plt.grid(True, linestyle=':')
plt.show()
动态疫情地图
from pyecharts.charts import Map
from pyecharts import options as opts
# 模拟数据
province_data = [("湖北", 68900), ("广东", 2450), ("北京", 1200)]
map_chart = (
Map()
.add("累计确诊", province_data, "china")
.set_global_opts(
title_opts=opts.TitleOpts(title="全国疫情分布"),
visualmap_opts=opts.VisualMapOpts(
max_=70000,
is_piecewise=True,
range_color=["#FFE4E1", "#FF6347", "#8B0000"]
)
)
)
map_chart.render("covid_map.html")
交互特性:
数据准备:
import pandas as pd
# 从CSV加载数据(示例数据集)
df = pd.read_csv("covid_data.csv")
df['date'] = pd.to_datetime(df['date'])
# 处理数据
daily_new = df.groupby('date')['confirmed'].sum().reset_index()
多图表联动仪表盘:
from pyecharts.charts import Line, Grid
# 折线图
line = (
Line()
.add_xaxis(daily_new['date'].dt.strftime('%Y-%m-%d').tolist())
.add_yaxis("新增确诊", daily_new['confirmed'].tolist())
.set_global_opts(title_opts=opts.TitleOpts(title="每日新增趋势"))
)
# 组合仪表盘
dashboard = Grid()
dashboard.add(line, grid_opts=opts.GridOpts(pos_left="5%", pos_right="5%"))
dashboard.render("covid_dashboard.html")
可视化设计黄金法则:
┌───────────────┬───────────────────────────┐
| 原则 | 实施方法 |
├───────────────┼───────────────────────────┤
| 简洁性 | 每图传达一个核心信息 |
| 一致性 | 统一配色与字体风格 |
| 对比性 | 关键数据使用突出颜色 |
| 真实性 | 避免扭曲数据的可视化技巧 |
└───────────────┴───────────────────────────┘
图表类型选择指南:
| 分析目标 | 推荐图表 |
|----------------|--------------------------|
| 趋势分析 | 折线图/面积图 |
| 分布分析 | 直方图/箱线图 |
| 关联分析 | 散点图/热力图 |
| 构成分析 | 饼图/旭日图 |
| 地理分析 | 地图/流向图 |
参考答案提示
# Seaborn相关性热力图
import seaborn as sns
corr_matrix = df[['confirmed', 'deaths', 'recovered']].corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
你将解锁: