Python数据可视化全攻略:从Matplotlib到Pyecharts

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

数据可视化是数据分析中不可或缺的一部分,它能够帮助我们直观地理解数据、发现规律并传达信息。Python提供了多种强大的可视化库,本文将全面介绍Matplotlib、Seaborn和Pyecharts三大主流工具的使用方法。

1. Matplotlib基础绘图

Matplotlib是Python中最基础的可视化库,提供了丰富的绘图功能。

1.1 绘制折线图

折线图适合展示数据随时间变化的趋势:

import numpy as np
import matplotlib.pyplot as plt

# 1.导入pyplot模块
# 2.绘制线条
# x轴的数据,代表10次考试天
x = np.arange(0, 10)  
# y轴的数据,代表数学科目对应成绩
y_max = np.array([99, 94, 95, 96, 97, 98, 99, 100, 99, 98])  
# y轴的数据,代表语文科目对应成绩
y_min = np.array([90, 84, 85, 79, 87, 99, 89, 90, 89, 88])

# 根据一组数据绘制第一条线,线上的数据标记是圆形,大小是6像素
plt.plot(x, y_max, marker='o', ms=6)  
# 根据另一组数据绘制第二条线,线上的数据标记是星形,大小是8像素
plt.plot(x, y_min, marker='*', ms=8)  

# 3.完善图表
# 正常显示中文
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
plt.title('Xiaoming\'s exam results for 10 consecutive times')  # 添加标题
plt.xlabel('Exam frequency')  # 设置x轴的标签
plt.ylabel('Score')  # 设置y轴的标签

# 4.展示图表
plt.show()

在这里插入图片描述

1.2 绘制柱形图

柱形图适合比较不同类别间的数值差异:

import numpy as np
# 1.导入pyplot模块
import matplotlib.pyplot as plt

# 2.绘制柱形
# x轴的数据,代表科目
x = np.arange(1, 6)  
# y轴的数据,代表张三的成绩
y_a = np.array([85, 90, 70, 92, 87]) 
# y轴的数据,代表李四的成绩
y_b = np.array([78, 82,92, 85, 83])
bar_width = 0.3   # 柱形的宽度

rect_a = plt.bar(x, y_a, tick_label=["yvwen", "shuxue", "yingyv", "wuli", "huaxue"], width=bar_width, label='zhangsan')  # 根据一组数据绘制柱形
rect_b = plt.bar(x+bar_width, y_b, width=bar_width, label='lisi')  # 根据另一组数据绘制柱形

# 3.完善图表
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置坐标轴的标签
plt.ylabel('Score')  
# 添加标题
plt.title('The scores of five students in five exams')

# 添加注释文本
def autolabel(rects):
    """在每个柱形上方添加注释文本"""
    for rect in rects:
        rect_height = rect.get_height()     # 获取每个柱形的高度
        rect_x = rect.get_x()                 # 获取每个柱形的x值
        rect_width = rect.get_width()        # 获取每个柱形的宽度
        plt.text(rect_x + rect_width / 2, rect_height + 1, 
                 s='{}'.format(rect_height),
                 ha='center', va='bottom', fontsize=9)

autolabel(rect_a)
autolabel(rect_b)

# 添加图例
plt.legend()

# 4.展示图表
plt.show()

在这里插入图片描述

1.3 绘制散点图

散点图适合展示两个变量间的关系:

import numpy as np
# 1.导入pyplot模块
import matplotlib. pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
# 2.绘制点
# 学习时间
learn_time = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 小明的成绩
xiaoming_score = np.array([20, 34, 57, 61, 85, 86, 90, 92, 79, 60])
plt.scatter(learn_time, xiaoming_score, s=50, c='y', edgecolors='k') 
# 3.完善图表 
plt.title('the relationship between learning time and score')
plt.xlabel('length of learning time')  
plt.ylabel('xiaoming score')  
plt.grid(visible=True, linewidth=0.5)   # 添加网格
plt.xlim(learn_time.min()-5, learn_time.max()+5)  # 设置x轴的刻度范围
# 4.展示图表
plt.show()

在这里插入图片描述

2. Seaborn高级可视化

Seaborn基于Matplotlib,提供了更高级的统计图表和美观的默认样式。

2.1 数据分布可视化

单变量分布
# y轴的数据,代表最低气温
y_min = np.array([19, 19, 20, 22, 22, 21, 22, 16, 18, 18, 17, 14, 15, 16, 16])

# 使用Seaborn绘制双线图
plt.figure(figsize=(10, 6))
sns.lineplot(x=x, y=y_max, marker='o', label='the highest temperature')
sns.lineplot(x=x, y=y_min, marker='o', label='the lowest temperature')

# 添加标题和标签
plt.title('temperature')
plt.xlabel('date')
plt.ylabel('temperature')
plt.legend()

# 展示图表
plt.show()

在这里插入图片描述

双变量分布
import seaborn as sns
import matplotlib.pyplot as plt

# 加载示例数据集
tips = sns.load_dataset('tips', data_home='data/seaborn-data')

# 绘制散点图
sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.show()

# 绘制带有回归线的散点图
sns.lmplot(x="total_bill", y="tip", data=tips)
plt.show()

在这里插入图片描述


# 绘制 KDE 图
sns.kdeplot(x="total_bill", y="tip", data=tips, fill=True)
plt.show()

在这里插入图片描述

# 绘制等高线图
sns.kdeplot(x="total_bill", y="tip", data=tips, levels=5)
plt.show()

在这里插入图片描述

# 绘制六边形图
sns.jointplot(x="total_bill", y="tip", data=tips, kind="hex")
plt.show()

在这里插入图片描述

2.2 分类数据可视化

import seaborn as sns
import matplotlib.pyplot as plt

# 加载示例数据集
tips = sns.load_dataset('tips', data_home='data/seaborn-data')

# 绘制 stripplot
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)
plt.show()

在这里插入图片描述

# 绘制 swarmplot
sns.swarmplot(x="day", y="total_bill", data=tips)
plt.show()

在这里插入图片描述

# 使用 catplot 绘制 swarmplot
sns.catplot(x="day", y="total_bill", data=tips, kind="swarm")
plt.show()

在这里插入图片描述

import seaborn as sns
import matplotlib.pyplot as plt

# 加载示例数据集
tips = sns.load_dataset('tips', data_home='data/seaborn-data')

# 绘制 boxplot
sns.boxplot(x="day", y="total_bill", data=tips)
plt.show()

在这里插入图片描述

# 绘制 violinplot
sns.violinplot(x="day", y="total_bill", data=tips)
plt.show()

在这里插入图片描述

# 绘制 boxenplot
sns.boxenplot(x="day", y="total_bill", data=tips)
plt.show()

在这里插入图片描述

3. Pyecharts交互式可视化

Pyecharts基于Echarts,可以生成交互式的HTML图表。

3.1 柱形图

from pyecharts.charts import Bar
from pyecharts import options as opts

# 数据准备
categories = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
values = [120, 200, 150, 80, 70, 110, 130]

# 创建柱状图对象
bar = Bar()

# 添加数据
bar.add_xaxis(categories)
bar.add_yaxis("销售额", values)

# 设置全局配置项
bar.set_global_opts(
    title_opts=opts.TitleOpts(title="每周销售额"),
    xaxis_opts=opts.AxisOpts(name="星期"),
    yaxis_opts=opts.AxisOpts(name="销售额")
)

# 渲染图表到 HTML 文件
bar.render("bar_chart.html")

# 如果在 Jupyter Notebook 中显示,可以使用以下代码
bar.render_notebook()

在这里插入图片描述

3.2 词云图

from pyecharts.charts import WordCloud
from pyecharts import options as opts

# 数据准备
words = [
    ("Python", 100),
    ("数据科学", 80),
    ("机器学习", 70),
    ("深度学习", 60),
    ("数据分析", 50),
    ("可视化", 40),
    ("算法", 30),
    ("编程", 20),
    ("统计", 15),
    ("数据库", 10)
]

# 创建词云图对象
wordcloud = WordCloud()

# 添加数据
wordcloud.add(
    series_name="关键词",
    data_pair=words,
    shape="circle",
    word_size_range=[20, 100],
    textstyle_opts=opts.TextStyleOpts(font_family="cursive")
)

# 设置全局配置项
wordcloud.set_global_opts(
    title_opts=opts.TitleOpts(title="关键词词云图")
)

# 渲染图表到 HTML 文件
wordcloud.render("wordcloud_chart.html")

# 如果在 Jupyter Notebook 中显示,可以使用以下代码
wordcloud.render_notebook()

在这里插入图片描述

3.3 气泡图

from pyecharts.charts import Scatter
from pyecharts import options as opts
import random

# 数据准备
data = [
    [random.randint(0, 100), random.randint(0, 100), random.randint(10, 100)]
    for _ in range(50)
]

# 创建散点图对象
scatter = Scatter()

# 添加数据
scatter.add_xaxis([d[0] for d in data])
scatter.add_yaxis(
    series_name="气泡图",
    y_axis=[d[1] for d in data],
    symbol_size=[d[2] for d in data],  # 气泡大小
    label_opts=opts.LabelOpts(is_show=False)  # 不显示标签
)

# 设置全局配置项
scatter.set_global_opts(
    title_opts=opts.TitleOpts(title="气泡图示例"),
    xaxis_opts=opts.AxisOpts(name="X 轴"),
    yaxis_opts=opts.AxisOpts(name="Y 轴"),
    visualmap_opts=opts.VisualMapOpts(type_="size", min_=10, max_=100)  # 视觉映射配置
)

# 渲染图表到 HTML 文件
scatter.render("bubble_chart.html")

# 如果在 Jupyter Notebook 中显示,可以使用以下代码
scatter.render_notebook()

在这里插入图片描述

3.4 圆环图

from pyecharts.charts import Pie
from pyecharts import options as opts

# 数据准备
data = [
    ("类别A", 30),
    ("类别B", 20),
    ("类别C", 25),
    ("类别D", 15),
    ("类别E", 10)
]

# 创建饼图对象
pie = Pie()

# 添加数据
pie.add(
    series_name="类别分布",
    data_pair=data,
    radius=["40%", "70%"],  # 设置内外半径,形成圆环
    label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)")
)

# 设置全局配置项
pie.set_global_opts(
    title_opts=opts.TitleOpts(title="圆环图示例"),
    legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%")
)

# 渲染图表到 HTML 文件
pie.render("doughnut_chart.html")

# 如果在 Jupyter Notebook 中显示,可以使用以下代码
pie.render_notebook()

在这里插入图片描述

总结

本文介绍了Python中三大主流可视化库的使用方法:

  1. Matplotlib:基础绘图库,灵活性强,适合创建各种静态图表
  2. Seaborn:基于Matplotlib的高级统计图表库,默认样式美观,适合数据探索
  3. Pyecharts:交互式可视化库,基于Echarts,适合创建网页交互图表

根据不同的需求场景,可以选择合适的工具:
• 快速探索数据:Seaborn
• 精确控制图表细节:Matplotlib
• 创建交互式网页图表:Pyecharts

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值