本文将介绍如何使用 Python 创建精美的数据可视化图案,并通过一个完整案例展示其强大功能。
Python作为数据科学领域最受欢迎的编程语言之一,提供了丰富的可视化库。本文将介绍如何使用Python创建精美的数据可视化图案,并通过一个完整案例展示其强大功能。

一、主流可视化库介绍
Python中常用的可视化库包括:
- Matplotlib:最基础、最常用的绘图库,提供了类似MATLAB的绘图接口
- Seaborn:基于Matplotlib,提供了更美观的默认样式和高级统计图表
- Plotly:支持交互式可视化,可生成动态图表
- Bokeh:专注于Web浏览器的交互式可视化
二、案例:销售数据多维度分析可视化
下面通过一个实际案例,展示如何创建包含多个子图的综合性数据可视化仪表板。我们将模拟一年的产品销售数据,并从多个角度进行可视化分析。
1. 数据准备
首先生成模拟的销售数据,包括日期、销售额、产品类别、地区等维度。为确保结果可复现,我们设置随机种子为42。
2. 可视化设计
我们将创建一个包含四个子图的仪表板:
- 折线图:展示月度销售趋势,观察销售额随时间的变化规律
- 柱状图:对比不同产品类别的总销售额
- 饼图:展示各地区销售额占比
- 散点图:分析销售额与订单数量的相关性
3. 完整代码实现
下面是完整的代码实现,包含数据生成和可视化绘制:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import seaborn as sns
import warnings
# 忽略字体警告
warnings.filterwarnings('ignore')
# 设置随机种子
np.random.seed(42)
# ====== 关键修改:中文字体配置 ======
# Windows用户使用以下配置
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
# 如果上述字体都不可用,可以尝试:
# plt.rcParams['font.family'] = ['sans-serif']
# plt.rcParams['font.sans-serif'] = ['DejaVu Sans']
# 然后把中文换成英文标签
sns.set_style("whitegrid")
# 生成模拟销售数据
def generate_sales_data(n_records=365):
"""生成一年的销售数据"""
start_date = datetime(2023, 1, 1)
dates = [start_date + timedelta(days=x) for x in range(n_records)]
categories = ['Electronics', 'Clothing', 'Food', 'Books', 'Home'] # 使用英文
regions = ['East', 'North', 'South', 'Southwest', 'Northeast']
data = {
'Date': dates,
'Sales': np.random.normal(50000, 15000, n_records).clip(min=10000),
'Orders': np.random.poisson(100, n_records),
'Category': np.random.choice(categories, n_records),
'Region': np.random.choice(regions, n_records)
}
return pd.DataFrame(data)
# 生成数据
df = generate_sales_data()
# 创建图形
fig = plt.figure(figsize=(16, 10))
fig.suptitle('Sales Data Dashboard', fontsize=20, fontweight='bold', y=0.995)
# 1. 月度销售趋势
ax1 = plt.subplot(2, 2, 1)
monthly_sales = df.groupby(df['Date'].dt.to_period('M'))['Sales'].sum()
monthly_sales.index = monthly_sales.index.to_timestamp()
ax1.plot(monthly_sales.index, monthly_sales.values,
marker='o', linewidth=2.5, markersize=8, color='#2E86AB')
ax1.fill_between(monthly_sales.index, monthly_sales.values, alpha=0.3, color='#2E86AB')
ax1.set_title('Monthly Sales Trend', fontsize=14, fontweight='bold', pad=15)
ax1.set_xlabel('Month', fontsize=11)
ax1.set_ylabel('Sales Amount', fontsize=11)
ax1.grid(True, alpha=0.3)
# 2. 产品类别销售额
ax2 = plt.subplot(2, 2, 2)
category_sales = df.groupby('Category')['Sales'].sum().sort_values(ascending=False)
colors = sns.color_palette("husl", len(category_sales))
bars = ax2.bar(range(len(category_sales)), category_sales.values, color=colors, alpha=0.8)
ax2.set_title('Sales by Category', fontsize=14, fontweight='bold', pad=15)
ax2.set_xlabel('Category', fontsize=11)
ax2.set_ylabel('Total Sales', fontsize=11)
ax2.set_xticks(range(len(category_sales)))
ax2.set_xticklabels(category_sales.index, rotation=15)
ax2.grid(True, alpha=0.3, axis='y')
for bar in bars:
height = bar.get_height()
ax2.text(bar.get_x() + bar.get_width()/2., height,
f'{int(height/10000)}w',
ha='center', va='bottom', fontsize=9)
# 3. 地区销售占比
ax3 = plt.subplot(2, 2, 3)
region_sales = df.groupby('Region')['Sales'].sum()
colors_pie = sns.color_palette("Set2", len(region_sales))
wedges, texts, autotexts = ax3.pie(region_sales.values,
labels=region_sales.index,
autopct='%1.1f%%',
colors=colors_pie,
startangle=90,
textprops={'fontsize': 10})
ax3.set_title('Sales by Region', fontsize=14, fontweight='bold', pad=15)
for autotext in autotexts:
autotext.set_color('white')
autotext.set_fontweight('bold')
# 4. 散点图
ax4 = plt.subplot(2, 2, 4)
scatter = ax4.scatter(df['Orders'], df['Sales'],
c=df['Sales'], cmap='viridis',
alpha=0.6, s=50, edgecolors='black', linewidth=0.5)
ax4.set_title('Sales vs Orders', fontsize=14, fontweight='bold', pad=15)
ax4.set_xlabel('Order Count', fontsize=11)
ax4.set_ylabel('Sales Amount', fontsize=11)
ax4.grid(True, alpha=0.3)
z = np.polyfit(df['Orders'], df['Sales'], 1)
p = np.poly1d(z)
ax4.plot(df['Orders'].sort_values(),
p(df['Orders'].sort_values()),
"r--", linewidth=2, alpha=0.8, label='Trend Line')
ax4.legend(fontsize=10)
cbar = plt.colorbar(scatter, ax=ax4)
cbar.set_label('Sales', fontsize=10)
plt.tight_layout()
plt.show()
print("=" * 50)
print("Data Summary")
print("=" * 50)
print(f"\nTotal Sales: {df['Sales'].sum():,.0f}")
print(f"Average Daily Sales: {df['Sales'].mean():,.0f}")
print(f"Total Orders: {df['Orders'].sum():,}")


4. 代码解析
数据生成部分:
- 使用np.random.seed(42)设置随机种子,确保每次运行生成相同的数据
- 生成365天的销售数据,包含日期、销售额、订单数量、产品类别和地区信息
- 销售额服从正态分布,订单数量服从泊松分布,更贴近实际情况
可视化部分:
- 使用subplot创建2×2的子图布局
- 折线图展示时间序列趋势,使用填充效果增强视觉效果
- 柱状图使用不同颜色区分类别,并添加数值标签
- 饼图直观展示比例关系
- 散点图使用颜色映射表示第三维度数据,并添加趋势线
5. 运行效果
运行上述代码后,将生成一个包含四个子图的综合仪表板,清晰展示销售数据的多个维度。同时,控制台会输出关键统计指标,帮助快速了解数据概况。
三、可视化设计建议
- 颜色搭配:使用协调的配色方案,避免过于刺眼的颜色
- 标题和标签:确保所有图表都有清晰的标题和坐标轴标签
- 数据标注:在关键数据点添加标注,提高可读性
- 布局合理:合理安排子图位置,保持整体美观
- 交互性:必要时可以使用Plotly等库添加交互功能
四、总结
Python的可视化生态系统为数据分析提供了强大支持。通过合理使用Matplotlib、Seaborn等工具,我们可以创建既美观又实用的数据可视化图表。关键是要根据数据特点选择合适的图表类型,并注重细节设计,让可视化真正发挥传递信息的作用。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量
4万+

被折叠的 条评论
为什么被折叠?



