引言

        因为我每天都要处理成千上万条数据。如果用Excel画图,每次改个参数都要手动调整,效率低得要命。而且当你需要实时更新、制作交互式报告、或者批量生成几十个图表时,Excel基本就歇菜了。

Python的可视化强在三点:

        1. 自动化能力:代码写一次,重复执行一万次都一样精准

        2. 灵活性:从简单的折线图到复杂的3D交互图表,想怎么做都能实现

        3. 生态完整:从数据清洗到可视化再到报告生成,整个流程都能打通

本教程会讲三个核心库:

        • Matplotlib:基础可视化库,几乎所有其他库都建立在它之上

        • Seaborn:基于Matplotlib的高级库,专门用于统计可视化,默认样式就很漂

        • Plotly:交互式可视化库,可以生成可缩放、可拖拽的动态图表

先说个我踩过的坑:刚开始学的时候我试图一口气把三个库全学会,结果越学越乱。后来发现应该这样:

        Matplotlib用来理解基础概念(怎么画坐标轴、怎么改样式),Seaborn用来快速出好看的统计图表,Plotly用来做需要交互的场景。这样学习路径清晰很多。

环境准备

安装其实很简单,但有几个细节要注意。

首先安装基础库:

pip install matplotlib seaborn plotly pandas numpy jupyter

我建议用虚拟环境,不然以后项目多了容易冲突:

python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或者
venv\Scripts\activate  # Windows
pip install matplotlib seaborn plotly pandas numpy jupyter

安装完成后,启动Jupyter Notebook:

jupyter notebook

现在来做几个基础配置,这些设置能让你的图表默认就好看很多:

# 在Jupyter Notebook中直接显示图表
%matplotlib inline
# 导入库
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import pandas as pd
import numpy as np
# 中文显示设置(这个很重要,不然中文会显示成方块)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
# Seaborn样式设置
sns.set_style('whitegrid')  # 设置背景样式
sns.set_context('notebook', font_scale=1.2)  # 设置字体大小
# 设置图表默认大小
plt.rcParams['figure.figsize'] = (12, 6)

这里有个坑点:中文设置在Linux/Mac上可能需要不同的字体,比如Arial Unicode MS。如果显示不出来,可以用以下代码查看系统有哪些字体:

from matplotlib.font_manager import FontManager
import matplotlib.font_manager as fm
fonts = set([f.name for f in fm.fontManager.ttflist])
print(sorted(fonts)[:20])  # 打印前20个字体

核心可视化技术

基础图表

先从最基础的折线图开始。这个图表我最常用,比如展示时间序列数据。

# 生成模拟数据
dates = pd.date_range('2025-01-01', '2025-01-31', freq='D')
sales = np.random.normal(1000, 200, len(dates)).cumsum()
# 基础折线图
plt.figure(figsize=(14, 6))
plt.plot(dates, sales, linewidth=2, color='#2ecc71')
# 添加标题和标签
plt.title('2025年1月销售趋势', fontsize=16, pad=20)
plt.xlabel('日期', fontsize=12)
plt.ylabel('累计销售额(元)', fontsize=12)
# 添加网格线
plt.grid(True, linestyle='--', alpha=0.6)
# 格式化x轴日期
import matplotlib.dates as mdates
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m-%d'))
plt.gca().xaxis.set_major_locator(mdates.WeekdayLocator(byweekday=mdates.MO))
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

这里有个细节:tight_layout()这个函数很关键,它能自动调整图表边距,防止标签被截断。我刚开始的时候经常忘了加,结果图表总是少半边。

接下来是柱状图,这个适合对比分类数据。

# 生成分类数据
categories = ['产品A', '产品B', '产品C', '产品D', '产品E']
values = [120, 85, 90, 110, 95]
# 绘制柱状图
plt.figure(figsize=(12, 6))
bars = plt.bar(categories, values, color=['#3498db', '#e74c3c', '#2ecc71', '#f39c12', '#9b59b6'])
# 在柱子上添加数值标签
for bar in bars:
    height = bar.get_height()
    plt.text(bar.get_x() + bar.get_width()/2., height,
             f'{height}',
             ha='center', va='bottom', fontsize=12)
# 添加标题
plt.title('各产品销售额对比', fontsize=16, pad=20)
plt.xlabel('产品名称', fontsize=12)
plt.ylabel('销售额(万元)', fontsize=12)
# 设置y轴范围,让标签不贴边
plt.ylim(0, max(values) * 1.1)
plt.tight_layout()
plt.show()

散点图我用来做相关性分析特别好用。比如分析广告投入和销售额的关系。

# 生成模拟数据
np.random.seed(42)
ad_spend = np.random.uniform(10, 100, 100)
sales = 20 + 1.5 * ad_spend + np.random.normal(0, 10, 100)
# 绘制散点图
plt.figure(figsize=(10, 6))
plt.scatter(ad_spend, sales, alpha=0.6, s=80, c=ad_spend, cmap='viridis')
# 添加趋势线
z = np.polyfit(ad_spend, sales, 1)
p = np.poly1d(z)
plt.plot(ad_spend, p(ad_spend), "r--", alpha=0.8, linewidth=2, label='趋势线')
# 添加标题和标签
plt.title('广告投入与销售额关系', fontsize=16, pad=20)
plt.xlabel('广告投入(万元)', fontsize=12)
plt.ylabel('销售额(万元)', fontsize=12)
plt.legend()
# 添加颜色条
plt.colorbar(label='广告投入')
plt.tight_layout()
plt.show()

高级可视化

热力图是我做相关性分析时的必备工具。特别是做特征工程时,一眼就能看出哪些变量高度相关。

# 生成模拟数据
np.random.seed(42)
data = pd.DataFrame({
    '销售额': np.random.normal(100, 20, 100),
    '广告投入': np.random.normal(30, 10, 100),
    '客户数': np.random.normal(50, 15, 100),
    '转化率': np.random.uniform(0.01, 0.05, 100),
    '客单价': np.random.normal(200, 50, 100)
})
# 计算相关系数矩阵
corr = data.corr()
# 绘制热力图
plt.figure(figsize=(10, 8))
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0,
            square=True, linewidths=1, cbar_kws={"shrink": 0.8},
            fmt='.2f', vmin=-1, vmax=1)
plt.title('变量相关性热力图', fontsize=16, pad=20)
plt.tight_layout()
plt.show()

        这里有个小技巧:annot=True会在每个格子里显示数值,fmt='.2f'控制小数位数。我一般设置2位小数,太多太乱。

树状图(Treemap)我用来做占比可视化比饼图清晰多了,特别是分类比较多的时候。
import plotly.express as px
# 生成模拟数据
data = pd.DataFrame({
    '类别': ['电子产品', '服装', '食品', '家居', '美妆', '运动', '书籍', '其他'],
    '销售额': [45000, 32000, 28000, 15000, 18000, 12000, 8000, 5000]
})
# 绘制树状图
fig = px.treemap(data, path=['类别'], values='销售额',
                 title='各类别销售额占比',
                 color='销售额',
                 color_continuous_scale='Viridis')
fig.update_traces(textinfo='label+value+percent parent')
fig.update_layout(title_font_size=16)
fig.show()

交互式图表是我最近经常用的,特别是需要做展示的时候。

# 生成时间序列数据
dates = pd.date_range('2024-01-01', '2025-12-31', freq='M')
values = np.random.normal(100, 20, len(dates)).cumsum()
# 创建交互式折线图
fig = px.line(x=dates, y=values,
              title='2024-2025年销售额趋势',
              labels={'x': '日期', 'y': '累计销售额(元)'})
# 添加滑块和选择器
fig.update_layout(
    xaxis=dict(
        rangeslider=dict(visible=True),
        type="date"
    )
)
# 添加hover信息
fig.update_traces(
    hovertemplate='<b>日期</b>: %{x}<br>' +
                  '<b>销售额</b>: %{y:,.0f}元<extra></extra>'
)
fig.show()

        (注:交互式图表可缩放、拖拽、显示详细信息,此处展示静态版本)

图表优化技巧

        配色这块我踩过很多坑。刚开始直接用默认颜色,结果做汇报时被老板说"太丑了"。

后来我整理了一套配色方案:

# 定义配色方案
colors = {
    'primary': '#3498db',      # 主色-蓝色
    'success': '#2ecc71',      # 成功-绿色
    'warning': '#f39c12',      # 警告-橙色
    'danger': '#e74c3c',       # 危险-红色
    'info': '#9b59b6',         # 信息-紫色
    'gray': '#95a5a6'          # 中性-灰色
}
# 自定义配色调色板
custom_palette = [colors['primary'], colors['success'], colors['warning'],
                  colors['danger'], colors['info']]
# 使用示例
plt.figure(figsize=(12, 6))
plt.bar(['A', 'B', 'C', 'D', 'E'], [23, 45, 56, 78, 32],
        color=custom_palette)
plt.title('自定义配色示例', fontsize=16)
plt.tight_layout()
plt.show()

字体设置也很重要,我一般统一设置:

# 全局字体设置
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文用黑体
plt.rcParams['font.size'] = 12
plt.rcParams['axes.titlesize'] = 14
plt.rcParams['axes.labelsize'] = 12
plt.rcParams['xtick.labelsize'] = 10
plt.rcParams['ytick.labelsize'] = 10
# 标题加粗
plt.rcParams['axes.titleweight'] = 'bold'

布局优化这块,subplot经常用:

# 创建2x2子图
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# 第一个图:折线图
axes[0, 0].plot(dates, sales)
axes[0, 0].set_title('销售趋势')
axes[0, 0].set_ylabel('销售额')
# 第二个图:柱状图
axes[0, 1].bar(categories, values)
axes[0, 1].set_title('产品对比')
axes[0, 1].set_ylabel('销售额')
# 第三个图:散点图
axes[1, 0].scatter(ad_spend, sales, alpha=0.6)
axes[1, 0].set_title('广告与销售关系')
axes[1, 0].set_xlabel('广告投入')
axes[1, 0].set_ylabel('销售额')
# 第四个图:箱线图
axes[1, 1].boxplot([np.random.normal(100, 20, 100) for _ in range(4)])
axes[1, 1].set_title('各季度数据分布')
axes[1, 1].set_xticklabels(['Q1', 'Q2', 'Q3', 'Q4'])
plt.tight_layout()
plt.show()

数据报告自动化

        Jupyter Notebook做报告简直是神器。我之前每周做周报要花半天时间,现在半小时就能搞定。

使用Jupyter Notebook生成可交互报告

先创建一个Notebook,然后按这个结构来:

# 销售数据分析周报
**日期**: 2025年1月6日 - 2025年1月12日
**分析师**: [你的名字]
---
## 1. 数据概览

然后在代码单元格里写:

# 导入数据
df = pd.read_csv('sales_data.csv')
# 显示数据概览
display(df.head())
display(df.describe())
## 2. 销售趋势分析
# 绘制销售趋势
plt.figure(figsize=(14, 6))
plt.plot(df['date'], df['sales'])
plt.title('本周销售趋势')
plt.xlabel('日期')
plt.ylabel('销售额')
plt.xticks(rotation=45)
plt.grid(True)
plt.show()

最后导出为HTML:

# 在Jupyter中导出为HTML
!jupyter nbconvert sales_report.ipynb --to html --no-input

结合Markdown与可视化

在Notebook里,你可以混合使用Markdown和代码:

## 3. 关键指标
本周关键业务指标:

- **总销售额**: 125万元 (环比增长12%)
- **订单数**: 3,450单 (环比增长8%)
- **客单价**: 362元 (环比增长3.7%)
详细分析如下:
# 计算环比增长
本周销售额 = 125
上周销售额 = 111.6
环比增长 = (本周销售额 - 上周销售额) / 上周销售额 * 100
print(f'环比增长: {环比增长:.1f}%')

导出为PDF/HTML

导出PDF需要安装一些依赖:

# 导出PDF
!jupyter nbconvert report.ipynb --to pdf
# 导出HTML(不显示代码)
!jupyter nbconvert report.ipynb --to html --no-input
# 导出HTML(显示代码)
!jupyter nbconvert report.ipynb --to html

然后导出:

# 导出PDF
!jupyter nbconvert report.ipynb --to pdf
# 导出HTML(不显示代码)
!jupyter nbconvert report.ipynb --to html --no-input
# 导出HTML(显示代码)
!jupyter nbconvert report.ipynb --to html

我常用的导出命令:

# 完整版报告(包含代码)
jupyter nbconvert report.ipynb --to html --template classic
# 简洁版报告(不包含代码,只显示输出)
jupyter nbconvert report.ipynb --to html --no-input --no-prompt
# PDF报告
jupyter nbconvert report.ipynb --to pdf

实战案例

        来做个完整的案例分析,从数据清洗到可视化呈现。

场景设定

        假设你是一家电商公司的数据分析师,需要分析2025年1月的销售数据,找出销售趋势、产品表现和用户行为特征。

1. 数据准备与清洗

# 导入库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 设置显示选项
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
# 创建模拟数据
np.random.seed(42)
n_rows = 1000
dates = pd.date_range('2025-01-01', '2025-01-31', periods=n_rows)
df = pd.DataFrame({
    'order_id': range(1, n_rows + 1),
    'date': dates,
    'product_category': np.random.choice(['电子产品', '服装', '食品', '家居', '美妆'], n_rows),
    'product_name': np.random.choice(['手机', 'T恤', '零食', '沙发', '口红'], n_rows),
    'quantity': np.random.randint(1, 5, n_rows),
    'unit_price': np.random.normal(100, 50, n_rows).clip(10, 500),
    'customer_age': np.random.randint(18, 60, n_rows),
    'customer_city': np.random.choice(['北京', '上海', '广州', '深圳', '杭州'], n_rows),
    'payment_method': np.random.choice(['支付宝', '微信支付', '银行卡'], n_rows)
})
# 计算订单总金额
df['total_amount'] = df['quantity'] * df['unit_price']
# 添加一些异常值
df.loc[0, 'total_amount'] = 50000  # 异常高价订单
df.loc[1, 'quantity'] = 0        # 数量为0的订单
# 显示数据前几行
print("数据概览:")
print(df.head())
print("\n数据形状:", df.shape)
print("\n数据类型:")
print(df.dtypes)

2. 数据清洗

# 检查缺失值
print("缺失值统计:")
print(df.isnull().sum())
# 处理异常订单
# 移除数量为0的订单
df = df[df['quantity'] > 0]
# 处理异常高价订单(假设超过5000元为异常)
print("\n异常高价订单数量:", (df['total_amount'] > 5000).sum())
# 移除异常高价订单(也可以选择保留并单独分析)
df = df[df['total_amount'] <= 5000]
# 添加时间维度列
df['weekday'] = df['date'].dt.day_name()  # 星期几
df['day'] = df['date'].dt.day            # 日期
print("\n清洗后数据形状:", df.shape)
print("\n清洗后数据统计:")
print(df[['quantity', 'unit_price', 'total_amount']].describe())

3. 可视化分析

图表1: 每日销售趋势
# 按日期汇总销售额
daily_sales = df.groupby('date')['total_amount'].sum().reset_index()
# 绘制销售趋势图
plt.figure(figsize=(14, 6))
plt.plot(daily_sales['date'], daily_sales['total_amount'],
         linewidth=2, color='#3498db', marker='o', markersize=4)
# 添加趋势线
z = np.polyfit(range(len(daily_sales)), daily_sales['total_amount'], 1)
p = np.poly1d(z)
plt.plot(daily_sales['date'], p(range(len(daily_sales))),
         "r--", alpha=0.8, linewidth=2, label='趋势线')
plt.title('2025年1月每日销售额趋势', fontsize=16, pad=20)
plt.xlabel('日期', fontsize=12)
plt.ylabel('销售额(元)', fontsize=12)
plt.legend()
plt.grid(True, linestyle='--', alpha=0.6)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

图表解读:

        • 从趋势线可以看出,1月份整体销售额呈上升趋势

        • 可能存在周末或节日的销售高峰

        • 需要分析具体是哪些因素推动了增长

图表2: 各品类销售额对比
# 按品类汇总销售额和订单数
category_stats = df.groupby('product_category').agg({
    'total_amount': 'sum',
    'order_id': 'count',
    'quantity': 'sum'
}).round(2)
category_stats.columns = ['总销售额', '订单数', '销售数量']
category_stats = category_stats.sort_values('总销售额', ascending=False)
print("各品类销售统计:")
print(category_stats)
# 绘制柱状图
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 6))
# 左图:销售额
colors = ['#3498db', '#2ecc71', '#f39c12', '#e74c3c', '#9b59b6']
bars = ax1.bar(category_stats.index, category_stats['总销售额'], color=colors)
ax1.set_title('各品类销售额对比', fontsize=14, pad=15)
ax1.set_ylabel('销售额(元)', fontsize=12)
ax1.tick_params(axis='x', rotation=45)
# 在柱子上添加数值
for bar in bars:
    height = bar.get_height()
    ax1.text(bar.get_x() + bar.get_width()/2., height,
             f'{height:,.0f}',
             ha='center', va='bottom', fontsize=10)
# 右图:订单数
bars2 = ax2.bar(category_stats.index, category_stats['订单数'], color=colors)
ax2.set_title('各品类订单数对比', fontsize=14, pad=15)
ax2.set_ylabel('订单数', fontsize=12)
ax2.tick_params(axis='x', rotation=45)
for bar in bars2:
    height = bar.get_height()
    ax2.text(bar.get_x() + bar.get_width()/2., height,
             f'{int(height)}',
             ha='center', va='bottom', fontsize=10)
plt.tight_layout()
plt.show()

图表解读:

        • 电子产品销售额最高,但订单数不一定最多,说明客单价高

        • 服装类目虽然单价低,但订单数多,说明是高频消费品类

        • 需要结合这两个指标综合评估品类表现

图表3: 用户年龄分布与消费能力
# 按年龄段分组
df['age_group'] = pd.cut(df['customer_age'],
                         bins=[0, 25, 35, 45, 60],
                         labels=['18-25岁', '26-35岁', '36-45岁', '46-60岁'])
# 按年龄段统计
age_stats = df.groupby('age_group').agg({
    'total_amount': ['sum', 'mean', 'count']
}).round(2)
age_stats.columns = ['总消费额', '平均客单价', '订单数']
print("各年龄段消费统计:")
print(age_stats)
# 绘制年龄分布
fig, axes = plt.subplots(1, 3, figsize=(18, 6))
# 图1:年龄分布
age_counts = df['age_group'].value_counts().sort_index()
axes[0].pie(age_counts.values, labels=age_counts.index, autopct='%1.1f%%',
            colors=colors)
axes[0].set_title('用户年龄分布', fontsize=14)
# 图2:各年龄段消费额
axes[1].bar(age_stats.index, age_stats['总消费额'], color=colors)
axes[1].set_title('各年龄段总消费额', fontsize=14)
axes[1].set_ylabel('消费额(元)')
axes[1].tick_params(axis='x', rotation=45)
# 图3:各年龄段客单价
axes[2].bar(age_stats.index, age_stats['平均客单价'], color=colors)
axes[2].set_title('各年龄段平均客单价', fontsize=14)
axes[2].set_ylabel('客单价(元)')
axes[2].tick_params(axis='x', rotation=45)
plt.tight_layout()
plt.show()

图表解读:

        • 26-45岁年龄段是主要消费群体,订单数和消费额都最高

        • 36-45岁群体客单价最高,说明消费能力强

        • 18-25岁群体虽然消费额不高,但潜力大,可以作为重点培养对象

图表4: 城市销售热力图
# 按城市和品类统计销售
city_category_sales = df.groupby(['customer_city', 'product_category'])['total_amount'].sum().unstack()
print("城市-品类销售矩阵:")
print(city_category_sales)
# 绘制热力图
plt.figure(figsize=(12, 8))
sns.heatmap(city_category_sales, annot=True, fmt='.0f', cmap='YlOrRd',
            linewidths=1, cbar_kws={'label': '销售额(元)'},
            square=True)
plt.title('各城市-品类销售额热力图', fontsize=16, pad=20)
plt.xlabel('产品品类', fontsize=12)
plt.ylabel('城市', fontsize=12)
plt.tight_layout()
plt.show()
图表解读:

        • 北京在电子产品品类表现突出

        • 上海在服装品类占优势

        • 广州在食品品类销售更好

        • 不同城市消费偏好差异明显,可以针对性营销

图表5: 支付方式使用趋势
# 按支付方式和日期统计
payment_daily = df.groupby(['date', 'payment_method'])['order_id'].count().unstack()
# 计算支付方式占比
payment_total = df['payment_method'].value_counts()
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 6))
# 左图:支付方式占比
colors_payment = ['#1296db', '#7bb62a', '#e74c3c']
explode = (0.05, 0, 0)  # 突出显示支付宝
ax1.pie(payment_total.values, labels=payment_total.index, autopct='%1.1f%%',
        colors=colors_payment, explode=explode, startangle=90)
ax1.set_title('支付方式占比', fontsize=14)
# 右图:每日支付方式使用量
payment_daily.plot(kind='area', stacked=True, alpha=0.7, ax=ax2)
ax2.set_title('每日各支付方式使用量', fontsize=14)
ax2.set_xlabel('日期')
ax2.set_ylabel('订单数')
ax2.legend(title='支付方式', loc='upper left')
ax2.tick_params(axis='x', rotation=45)
plt.tight_layout()
plt.show()

图表解读:

        • 支付宝是最主要的支付方式

        • 微信支付紧随其后

        • 银行卡支付占比较小,可能需要分析原因

        • 各支付方式使用量相对稳定

4. 生成分析报告

# 计算关键指标
total_sales = df['total_amount'].sum()
total_orders = df['order_id'].nunique()
avg_order_value = df['total_amount'].mean()
avg_quantity = df['quantity'].mean()
top_category = category_stats.index[0]
top_city = df.groupby('customer_city')['total_amount'].sum().idxmax()
print("="*50)
print("2025年1月销售数据分析报告")
print("="*50)
print(f"\n整体指标:")
print(f"- 总销售额: ¥{total_sales:,.2f}")
print(f"- 总订单数: {total_orders}")
print(f"- 平均客单价: ¥{avg_order_value:.2f}")
print(f"- 平均购买数量: {avg_quantity:.1f}件")
print(f"\n品类表现:")
print(f"- 销量冠军品类: {top_category}")
print(f"- 该品类销售额: ¥{category_stats.loc[top_category, '总销售额']:,.2f}")
print(f"\n区域表现:")
print(f"- 销量冠军城市: {top_city}")
print(f"- 该城市销售额: ¥{df[df['customer_city']==top_city]['total_amount'].sum():,.2f}")
print(f"\n用户特征:")
print(f"- 主要消费年龄段: 26-45岁")
print(f"- 占比: {((df['customer_age']>=26) & (df['customer_age']<=45)).sum()/len(df)*100:.1f}%")
print("\n" + "="*50)

工具库推荐

除了三大核心库,这些库也值得了解:

        专业图表库:

                • Altair: 基于语法糖的声明式可视化库

                • Bokeh: 专注于Web交互的可视化库

                • Pyecharts: 百度Echarts的Python接口,适合中文环境

        数据分析增强库:

                • Plotnine: ggplot2风格的Python实现

                • Missingno: 专门用于可视化缺失数据

                • Yellowbrick: 机器学习可视化工具

实用工具

Jupyter扩展:

        • jupyterlab: Jupyter的下一代界面

        • ipywidgets: 交互式组件

        • voila: 将Notebook转换为Web应用

报告生成工具:

        • nbconvert: 导出Notebook为多种格式

        • Papermill: 参数化执行Notebook

        • Datapane: 自动化生成数据报告

实战建议

最后分享几个我总结的经验:

        1. 先理解数据,再选择图表: 不要为了用某个图表而用,要根据数据特征和分 析目的来选择

        2. 代码复用很重要: 把常用的可视化代码封装成函数,提高效率

        3. 配色要统一: 建立自己的配色方案,保持风格一致

        4. 交互图表适量用: 交互式图表虽然酷,但静态图表有时候更清晰

        5. 持续学习新工具: 可视化领域发展很快,定期关注新的工具和技术

        我的学习路径建议:

                6. 先掌握Matplotlib基础(1-2周)

                7. 学习Seaborn统计可视化(1周)

                8. 掌握Plotly交互式图表(1周)

                9. 学习Jupyter报告生成(1周)

                10. 做实战项目,综合运用(持续)

        大概需要1-2个月就能入门,但要精通需要大量实践。

相关代码:

        本教程所有代码示例已经过测试,可以直接在Jupyter Notebook中运行。

有问题吗?

        欢迎在评论区讨论,我会尽力回复每一条留言。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐