跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python 数据可视化入门教程

综述由AI生成Python 数据可视化主要涉及 Pandas、Matplotlib、Seaborn 和 Pyecharts 四个核心库的使用。Pandas 提供 DataFrame 结构及基础绘图功能;Matplotlib 支持高度自定义的图表绘制与参数调整;Seaborn 基于 Matplotlib 提供更高级的统计图形接口;Pyecharts 则擅长交互式图表与地图展示。通过代码示例演示了各库在折线图、柱状图、热力图、雷达图及多表绘制中的具体应用,帮助读者掌握 Python 数据可视化的基本方法与技巧。

CoderByte发布于 2025/2/7更新于 2026/5/3026 浏览
Python 数据可视化入门教程

前言

什么是数据可视化? 数据可视化是为了使得数据更高效地反应数据情况,便于让读者更高效阅读,通过数据可视化突出数据背后的规律,以此突出数据中的重要因素。如果使用 Python 做数据可视化,建议学好如下这四个 Python 数据分析包,分别是:

Pandas、Matplotlib、Seaborn、Pyecharts

学好以上四个数据分析包,做可视化足够用了。全文较长,建议耐心看完,学习后即可使用 Python 做数据可视化,具体的代码实操部分可以实际用代码进行演示,这样才能更好的掌握,下面一起来学习~

01. Pandas

官网 https://www.pypandas.cn/

Pandas 是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据,广泛应用于数据分析领域。Pandas 适用于处理与 Excel 表类似的表格数据,以及有序和无序的时间序列数据等。

Pandas 的主要数据结构是 Series(一维数据)和 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。使用 pandas 进行数据分析流程包含数据整理与清洗、数据分析与建模、数据可视化与制表等阶段。

灵活的分组功能:group by 数据分组;

直观地合并功能:merge 数据连接;

灵活地重塑功能:reshape 数据重塑;

折线图示例

pandas 库不仅可以做一些数据清洗的工作,还可以使用 pandas 作图,并且做图时,使用一行代码就可以轻松作图,详细的作图方法可以看代码中的注释。

#导入 pandas 库  
import pandas as pd    
#生成一个 Series  
s=pd.Series([1,3,3,4], index=list('ABCD'))    

#括号内不指定图表类型,则默认生成直线图  
s.plot()

柱状图示例

#条形图
s.plot(kind='bar')

水平条形图示例

#水平条形图   
s.plot.barh()

饼图示例

#饼图   
s.plot.pie()

直方图示例

#直方图   
s.plot.hist()

密度图示例

#密度图   
import numpy as np 

s=pd.Series(np.random.randn(1000))  #生成一列随机数   
s.plot.kde()   
s.plot.density()

散点图示例

#散点图   
import numpy as np 
#生成一个 DataFrame  
df=pd.DataFrame(np.random.randn(1000,2),
                 columns=['X1','Y'])
df.plot.scatter(x='X1',y='Y')

六角箱图示例

#六角箱图   
df.plot.hexbin(x='X1',y='Y',gridsize=8)

箱型图示例

#箱型图
df=pd.DataFrame(np.random.rand(10,2),columns=['A','B'])
df.plot.box()

面积图示例

#面积图
df=pd.DataFrame(np.random.randint(10,size=(4,4)),
                 columns=list('ABCD'),
                 index=list('WXYZ'))    

df.plot.area()

02. Matplotlib


官网 https://www.matplotlib.org.cn/

Matplotlib 是一个 Python 2D 绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。Matplotlib 可用于 Python 脚本,Python 和 IPython Shell、Jupyter 笔记本,Web 应用程序服务器和四个图形用户界面工具包。

Matplotlib 尝试使容易的事情变得更容易,使困难的事情变得可能,只需几行代码就可以生成图表、直方图、功率谱、条形图、误差图、散点图等。

为了简单绘图,该 pyplot 模块提供了类似于 MATLAB 的界面,尤其是与 IPython 结合使用时,对于高级用户,您可以通过面向对象的界面或 MATLAB 用户熟悉的一组功能来完全控制线型,字体属性,轴属性等。

Matplotlib 示例

下面介绍 matplotlib 的用法,使用 matplotlib 除了可以作图外,还可以对于图表的参数做一些调整,使得图表更加美观,关于使用 matplotlib 的建议,可以做一些常用的图表模板,更换代码的数据源就可以生成图表,而不用一点一点的去调整参数。

#导入模块  
import matplotlib.pyplot as plt  

#设置风格  
plt.style.use('seaborn-white')  

#中文显示问题,如果没有这段代码,图表不显示中文汉字   
plt.rcParams['font.sans-serif'] =['SimHei']

这里首先导入 matplotlib 库,并使用了 seaborn-white 的图表风格,可以使用 plt.style.available 查看图表的风格,选择一个自己喜欢的图表风格,在图表中不能显示汉字,使用一段代码就可以显示了。

#构建一个 DataFrame 
import pandas as pd  
import matplotlib.pyplot as plt
  
df=pd.DataFrame({'X':[1,3,5,7]})  
df['Y']=df['X']**3  
df

DataFrame 示例

#设置图像的大小 
plt.figure(facecolor='white',figsize=(9,6),dpi=100)  
plt.plot(df['X'],df['Y'])
   
#设置图像的标题 
plt.title('折线图',fontsize=15,color='b') 
 
#设置图像的 X、Y 轴标题大小,颜色,与坐标轴的距离  
plt.xlabel('X 轴',fontsize=10,color='r',labelpad=15)  
plt.ylabel('Y 轴',fontsize=10,color='g',rotation=0,labelpad=15)   

#设置起始坐标点 
plt.xlim([1,8])  
plt.ylim([1,350]) 
#plt.xticks([1,2,3,4])只显示 1,2,3,4   
#plt.yticks([50,150,250,300])只显示 50,150,250,300  
  
#图像的网格线进行设置 
plt.grid(color='r', linestyle='-'.)

这里首先设置图像的大小,跟我们画画一样,选择多大的纸张去作图,一样的道理,然后设置坐标轴,起始坐标,网格线等。

折线图示例

有时候,要在一张图表上绘制多条线。

#多个图的绘图方法  
import numpy as np  
import matplotlib.pyplot as plt  

x=np.array([1,3,5])  
y1=x  
y2=x * 10  
y3=x * 20  
y4=x * 30

可以在一个 plt.plot 命令后继续加另一个 plt.plot 命令,可以在一张图上做另一条线。

plt.figure(facecolor='white')  
plt.plot(x,y1,label='A')  
plt.plot(x,y2,label='B')  
plt.plot(x,y3,label='C')  
plt.plot(x,y4,label='D')   

plt.legend()#显示图例

多线图示例

使用 plt.subplots 命令也可以作出同样的图。

#使用面向对象绘图  
fig,ax=plt.subplots(facecolor='white')  
plt.plot(x,y1,label='A')  
plt.plot(x,y2,label='B')  
plt.plot(x,y3,label='C')  
plt.plot(x,y4,label='D')   

plt.legend()#显示图例

面向对象绘图示例

多表绘制

下面介绍在一张图表的不同位置绘制不同的线型,使用 plt.subplot 命令首先确定绘图的位置,比如 plt.subplot(223) 表示在 2*2 分布的图表中第三个位置,其余的绘图命令相似。

plt.figure(facecolor='white',figsize=(9,6)) 

plt.subplot(221)  
plt.plot(x,y1,label='A',color='r')  
plt.xticks(fontsize=15)  
plt.legend()#显示图例   

plt.subplot(222)  
plt.plot(x,y2,label='B',color='y')  
plt.xticks(fontsize=15)  
plt.legend()#显示图例   

plt.subplot(223)  
plt.plot(x,y3,label='C',color='b')  
plt.xticks(fontsize=15)  
plt.legend()#显示图例  
  
plt.subplot(224)  
plt.plot(x,y4,label='D',color='g')  
plt.xticks(fontsize=15)  
plt.legend()#显示图例   

plt.tight_layout()#密集显示

多表绘制示例

除了使用 plt.subplot 命令确定绘图区域外,还可以用 axs[] 命令绘图,这种绘图方式是面向对象的绘图方式。

#面向对象绘制多图  
fig,axs=plt.subplots(2,2,facecolor='white',figsize=(9,6))  

axs[0,0].plot(x,y1,label='A',color='r')  
axs[0,1].plot(x,y2,label='B',color='y')  
axs[1,0].plot(x,y3,label='C',color='b')  
axs[1,1].plot(x,y4,label='D',color='g')

多子图示例

有时候绘制多张表时需共享一个坐标轴,可以使用 sharex='all'命令。

#sharex='all'共享 X 轴  
fig,axs=plt.subplots(4,1,facecolor='white', figsize=(9,6), sharex='all')   
axs[0].plot(x,y1,label='A',color='r')  
axs[1].plot(x,y2,label='B',color='y')  
axs[2].plot(x,y3,label='C',color='b')  
axs[3].plot(x,y4,label='D',color='g')

共享坐标轴示例

设置全局变量

使用 plt.rcParams 命令对全局变量设置,包括字符显示、中文显示、背景颜色、标题大小、坐标轴字体大小,线型等。

#导入模块  
import matplotlib.pyplot as plt  

#设置风格  
plt.style.use('seaborn-white')  

#设置全局变量  
plt.rcParams['axes.unicode_minus'] = False #字符显示 
plt.rcParams['font.sans-serif'] =['SimHei'] #中文显示  
plt.rcParams['figure.facecolor'] = 'b' #设置图表背景颜色 
plt.rcParams['axes.facecolor'] = (0.8,0.9,0.8) #设置 RGB 颜色  
plt.rcParams['axes.titlesize'] = 20 #设置标题大小  
plt.rcParams['axes.labelsize'] = 20 #设置轴大小  
plt.rcParams['xtick.labelsize'] = 20 #设置 X 坐标大小  
plt.rcParams['ytick.labelsize'] = 20 #设置 Y 坐标大小  
plt.rcParams['lines.linestyle'] = '-.' #设置线型  

plt.plot(x,y1,label='A')  
plt.plot(x,y2,label='B')  
plt.plot(x,y3,label='C')  
plt.plot(x,y4,label='D')   
plt.title('折线图')  
plt.xlabel('X 轴')  
plt.ylabel('Y 轴')  
plt.legend()#显示图例

下图就是通过设置全局变量做的图,个人觉得并不美观,对于其他图表全局变量的设置,大家可以探索,做出更好看的图表。

全局变量示例

03. Seaborn


官网 http://seaborn.pydata.org/

Seaborn 是一个基于 matplotlib 的 Python 数据可视化库,它建立在 matplotlib 之上,并与 Pandas 数据结构紧密集成,用于绘制有吸引力和信息丰富的统计图形的高级界面。

Seaborn 可用于探索数据,它的绘图功能对包含整个数据集的数据框和数组进行操作,并在内部执行必要的语义映射和统计聚合以生成信息图,其面向数据集的声明式 API 可以专注于绘图的不同元素的含义,而不是如何绘制它们的细节。

Matplotlib 拥有全面而强大的 API,几乎可以根据自己的喜好更改图形的任何属性,seaborn 的高级界面和 matplotlib 的深度可定制性相结合,使得 Seaborn 既可以快速探索数据,又可以创建可定制为出版质量最终产品的图形。

Seaborn 示例

绘制多行图

将变量按照多行的形式进行绘制,使用 sns.FacetGrid 命令。

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="white", rc={"axes.facecolor": (0, 0, 0, 0)})

rs = np.random.RandomState(1979)
x = rs.randn(500)
g = np.tile(list("ABCDEFGHIJ"), 50)
df = pd.DataFrame(dict(x=x, g=g))
m = df.g.map(ord)
df["x"] += m

pal = sns.cubehelix_palette(10, rot=-.25, light=.7)
g = sns.FacetGrid(df, row="g", hue="g", aspect=15, height=.5, palette=pal)

g.map(sns.kdeplot, "x",
      bw_adjust=.5, clip_on=False,
      fill=True, alpha=1, linewidth=1.5)
g.map(sns.kdeplot, "x", clip_on=False, color="w", lw=2, bw_adjust=.5)

g.refline(y=0, linewidth=2, linestyle="-", color=None, clip_on=False)

def label(x, color, label):
    ax = plt.gca()
    ax.text(0, .2, label, fontweight="bold", color=color,
            ha="left", va="center", transform=ax.transAxes)

g.map(label, "x")

g.figure.subplots_adjust(hspace=-.25)

g.set_titles("")
g.set(yticks=[], ylabel="")
g.despine(bottom=True, left=True)

多行图示例

绘制热力图

将数据的大小用热力图进行呈现,使用 sns.heatmap 命令。

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme()

# Load the example flights dataset and convert to long-form
flights_long = sns.load_dataset("flights")
flights = flights_long.pivot("month", "year", "passengers")

# Draw a heatmap with the numeric values in each cell
f, ax = plt.subplots(figsize=(9, 6))
sns.heatmap(flights, annot=True, fmt="d", linewidths=.5, ax=ax)

热力图示例

04. Pyecharts


官网 https://pyecharts.org/#/

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

Pyecharts 具有简洁的 API 设计,使用如丝滑般流畅,支持链式调用,囊括了 30+ 种常见图表,应有尽有,支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab,拥有高度灵活的配置项,可轻松搭配出精美的图表。

Pyecharts 强大的数据交互功能,使数据表达信息更加生动,增加了人机互动效果,并且数据呈现效果可直接导出为 html 文件,增加数据结果交互的机会,使得信息沟通更加容易。

Pyecharts 示例

绘制地图

Pyecharts 有着丰富的图表素材,支持链式调用,如下是使用 Pyecharts 的地理图表功能,空间上直观显示数据可视化效果。

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker

c = (
    Map()
    .add("商家 A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Map-VisualMap(分段型)"),
        visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),
    )
    .render("map_visualmap_piecewise.html")
)

地图示例

绘制雷达图

使用 Radar 命令绘制出雷达图,用来显示多变量数据的图形方法。

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

v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]
c = (
    Radar()
    .add_schema(
        schema=[
            opts.RadarIndicatorItem(name="销售", max_=6500),
            opts.RadarIndicatorItem(name="管理", max_=16000),
            opts.RadarIndicatorItem(name="信息技术", max_=30000),
            opts.RadarIndicatorItem(name="客服", max_=38000),
            opts.RadarIndicatorItem(name="研发", max_=52000),
            opts.RadarIndicatorItem(name="市场", max_=25000),
        ]
    )
    .add("预算分配", v1)
    .add("实际开销", v2)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        legend_opts=opts.LegendOpts(selected_mode="single"),
        title_opts=opts.TitleOpts(title="Radar-单例模式"),
    )
    .render("radar_selected_mode.html")
)

雷达图示例

以上介绍 pandas 如何绘制图表,同时引申 matplotlib 库的使用,并且介绍 Seaborn 和 Pyecharts 这两个数据可视化库,加以了解 Python 数据可视化内容,同时在数据可视化中学习多表绘制和设置全局变量,相信通过以上的学习,一定能对你学习 Python 数据可视化有所启发。

目录

  1. 前言
  2. 01. Pandas
  3. 02. Matplotlib
  4. 03. Seaborn
  5. Load the example flights dataset and convert to long-form
  6. Draw a heatmap with the numeric values in each cell
  7. 04. Pyecharts
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 昇腾平台 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践
  • AI 大模型技术入门与全栈开发实战指南
  • AI 编程工具选型:Copilot、Cursor、Codex 核心差异
  • JBoss Seam 实战:使用 JBoss Tools 构建首个 CRUD 项目
  • ClawdBot 本地部署实战:vLLM 后端与设备授权全链路解析
  • DOM 详解:使用 JavaScript 操作网页元素的核心方法
  • RoboChallenge 具身智能年度报告:4 万次真机评测揭示模型真实能力
  • VR 多相电源架构与设计详解
  • Linux 环境安装部署 GraphRAG 并使用 Ollama 本地大模型
  • ESP32-S31 发布:高性能多协议双核 RISC-V 芯片,支持 AI 交互
  • OpenClaw 开源 AI Agent 框架技术解析与实战指南
  • 指针与数据结构:核心原理与实战解析
  • 前端面试高频场景题精选
  • QuantConnect LEAN 开源量化交易引擎介绍
  • Fooocus 部署实践:本地手动配置与云平台一键启用对比
  • AI 大模型技术解析与实战指南:深入理解 Transformer 与 Colossal-AI
  • 具身导航 VLN 最新论文汇总 | Vision-and-Language Navigation
  • MySQL 表约束详解:非空、主键与外键的作用
  • QClaw 上手指南:本地 AI 代理工具深度体验与配置
  • llama.cpp 本地部署:显存优化与常见报错排查

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online