本文目录导读:

Python数据可视化的经典案例非常丰富,从基础统计到地理信息、实时数据流都有涉及,以下按难度和场景分类,推荐10个极具代表性的案例,并附上核心库和代码思路:
入门级:快速上手(Matplotlib + Seaborn)
股票K线图与均线
-
数据:Yahoo Finance 历史数据(
yfinance库) -
场景:金融数据分析
-
核心代码:
import yfinance as yf import matplotlib.pyplot as plt data = yf.download('AAPL', start='2023-01-01') data['Close'].plot(figsize=(12,6)) # 收盘价折线 data['20 MA'] = data['Close'].rolling(20).mean() # 20日均线 plt.show()
鸢尾花散点矩阵
-
数据:
sklearn.datasets.load_iris() -
场景:探索性分析
-
核心代码:
import seaborn as sns import pandas as pd df = pd.read_csv('iris.csv') sns.pairplot(df, hue='species', diag_kind='kde', markers=['o', 's', 'D']) plt.show()
美国GDP占比的饼图(带阴影)
-
数据:世界银行API
-
场景:比例构成
-
核心代码:
import matplotlib.pyplot as plt sectors = ['服务业', '工业', '农业'] sizes = [77, 20, 3] plt.pie(sizes, labels=sectors, autopct='%1.1f%%', shadow=True, startangle=90)
进阶级:交互与动态(Plotly + Bokeh)
实时房价热力图
-
数据:Kaggle 爱荷华州房价数据集
-
场景:相关性矩阵
-
核心代码:
import plotly.express as px import pandas as pd df = pd.read_csv('house.csv') corr = df.corr() fig = px.imshow(corr, text_auto=True, color_continuous_scale='RdBu_r') fig.show()
纽约出租车GPS轨迹动画
-
数据:NYC Taxi 公开数据集(2003部分)
-
场景:时空轨迹可视化
-
核心代码:
import plotly.graph_objects as go import pandas as pd df = pd.read_parquet('taxi.parquet') # 需预处理好 fig = go.Figure( data=go.Scattermapbox( lat=df['pickup_latitude'], lon=df['pickup_longitude'], mode='markers', marker={'size': 4, 'color': df['trip_distance'], 'colorscale': 'Viridis'} ), layout=go.Layout(mapbox_style='open-street-map') ) fig.show()
全球疫情动态仪表盘(交互式)
-
数据:Johns Hopkins 数据集(在线CSV)
-
场景:仪表板制作
-
核心代码(基于
dash):import dash import dash_core_components as dcc import dash_html_components as html import plotly.express as px df = px.data.gapminder() # 示例数据 app = dash.Dash() app.layout = html.Div([ dcc.Graph(figure=px.choropleth(df, locations='iso_alpha', color='lifeExp')) ]) if __name__ == '__main__': app.run_server(debug=True)
高级与专业级(Geopandas + 3D)
中国人口密度3D地形图
-
数据:全国县级人口数据 + 高程DEM
-
场景:地理信息叠加
-
核心代码(需
geopandas和matplotlib3D):import geopandas as gpd from mpl_toolkits.mplot3d import Axes3D data = gpd.read_file('county_pop.shp') fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.bar3d(data['longitude'], data['latitude'], 0, 0.5, 0.5, data['population'])
网络爬虫+词云(微博热搜)
-
数据:实时爬取微博热搜API
-
场景:舆情分析
-
核心代码(需
wordcloud和jieba):from wordcloud import WordCloud import jieba text = " ".join(jieba.cut("Python 数据可视化 案例 实践")) wc = WordCloud(font_path='simhei.ttf', background_color='white').generate(text) plt.imshow(wc)
机器学习决策边界可视化
-
数据:鸢尾花前两维特征
-
场景:模型解释
-
核心代码(使用
mlxtend.plotting):from sklearn.svm import SVC from mlxtend.plotting import plot_decision_regions clf = SVC().fit(X_train, y_train) plot_decision_regions(X_train, y_train, clf=clf, legend=2)
金融风险VaR蒙特卡洛模拟
-
数据:模拟10000条收益率路径
-
场景:定量金融
-
核心代码:
import numpy as np import matplotlib.pyplot as plt np.random.seed(42) paths = np.random.normal(0.001, 0.02, (1000, 252)).cumsum(axis=1) plt.plot(paths.T, alpha=0.1, color='b') plt.axhline(np.percentile(paths[:, -1], 5), color='r', lw=3)
💡 案例选择建议
| 目标场景 | 优先案例 | 推荐库 |
|---|---|---|
| 快速出图(日报/PPT) | 案例2、3 | Matplotlib + Seaborn |
| Web交互仪表板 | 案例6、5 | Plotly Dash / Bokeh |
| 地理空间分析 | 案例7、8 | Geopandas + Folium |
| 时间序列金融 | 案例1、10 | mplfinance / Plotly |
| 机器学习解释 | 案例9 | mlxtend / yellowbrick |
学习路径:
- 先跑通案例1-3,掌握 Pandas + Matplotlib/Seaborn 基础语法。
- 用 Plotly 改造案例2或4,体验交互式过滤。
- 尝试 Dash 搭建最简单的仪表板(案例6简化版)。
- 根据实际数据(如疫情、销售、天气)组合上述代码。
这些案例涵盖了90%的常见可视化需求,建议从鸢尾花的散点矩阵和股票K线图开始,因为它们直观且数据易得。