跳到主要内容 Python 数据可视化实战:基于 Matplotlib 的图表绘制指南 | 极客日志
Python AI 算法
Python 数据可视化实战:基于 Matplotlib 的图表绘制指南 详细讲解了如何使用 Python 中的 Matplotlib 库进行数据可视化。内容涵盖折线图、柱状图、直方图、散点图和饼状图的绘制方法与代码实现。文章介绍了基本语法、颜色样式设置、图例标题添加、交互式模式开启以及图表保存技巧。通过实际案例(如股票价格、人口分布),展示了如何将数据转化为直观的图表,帮助读者掌握 Matplotlib 的核心功能并应用于数据分析场景。
疯疯癫癫 发布于 2025/2/7 更新于 2026/4/20 2 浏览可视化是数据分析的核心环节。仅仅收集、处理和分析数据是不够的,还需要将发现以直观的方式展示出来。数据应当讲述一个故事,而缺乏视觉呈现的数据往往显得枯燥。人类主要通过视觉获取信息,正如俗话所说'一图胜千言'。醒目的图表更容易吸引注意力并传达关键信息。
作为数据科学和机器学习领域最流行的编程语言,Python 提供了丰富的可视化解决方案。本章将重点学习使用最著名的 Python 可视化库 Matplotlib。其他大多数 Python 可视化库(如 Seaborn)通常构建在 Matplotlib 之上或与其有相似的绘图方法。
一、Matplotlib 概述 Matplotlib 是第一个用于绘制数据图表的主要 Python 库。它是世界上使用最广泛的 Python 可视化解决方案之一。Matplotlib 支持绘制多种类型的图表,包括折线图、柱状图、散点图和直方图等常用类型。此外,它还有许多扩展模块可用于天文、地理或科学数据的可视化。
Matplotlib 通常随 Anaconda 发行版自带。只需导入 pyplot 模块即可开始使用。新建 Jupyter Notebook 文件后,执行以下导入操作:
import matplotlib.pyplot as plt
Matplotlib 是一个庞大的库,我们通常不需要导入全部功能,只需导入主要的 pyplot 模块即可。
二、折线图 (Line Chart) 首先通过一个简单的案例介绍 Matplotlib 的基本用法。创建两个包含数值的列表作为坐标数据:
x = [2 , 5 , 7 ]
y = [2 , 7 , 3 ]
为了画线,需要将各个点连接起来。每个点对应 x 和 y 坐标。使用 Matplotlib 的 plot() 函数绘制折线图:
plt.grid(True )
plt.plot(x, y, marker="o" )
plt.grid(True) 用于显示网格,帮助观察坐标对应关系。参数 marker="o" 表示在数据点上显示圆形标记。如果去掉该参数,将只显示连接线。
plt.plot() 函数非常灵活,可以接收任意两个迭代变量(如列表、元组、Pandas Series 或 NumPy 数组)作为 x 和 y 坐标。它还支持多种样式和颜色参数。
1. 颜色设置 颜色可以通过首字母缩写、完整名称、HEX 代码或 RGB 格式传入:
plt.plot(x, y, color="b" )
plt.plot(x, y, color="r" )
plt.plot(x, y, color="g" )
plt.plot(x, y, color="blue" )
plt.plot(x, y, color="red" )
plt.plot(x, y, color="#F08080" )
2. 图例与标题 所有图表都需要图例和标题。使用 legend() 和 title() 函数添加注释:
plt.plot(x, y, color="#F08080" , label="Data Line" )
plt.legend()
图例位置可通过 loc 参数调整,例如 lower center。标题同样支持位置、颜色和字号设置:
plt.title("Sample Plot" , loc="left" , color="#196F3D" , fontsize=22 )
3. 股票价格示例 下面演示如何绘制历史股价折线图。首先需要安装 pandas-datareader 库来获取数据:
import pandas_datareader as pdr
import pandas as pd
data = pdr.DataReader("AAPL" , "yahoo" , "2021-01-01" , "2021-12-12" )
y = data["Adj Close" ]
x = data.index
plt.figure(figsize=(12 , 8 ))
plt.plot(x, y, color="#196F3D" , label="AAPL" )
plt.legend(loc="lower right" )
plt.title("Apple Inc. Stock Price" , loc="left" , color="#196F3D" , fontsize=22 )
plt.xticks(rotation=45 )
plt.show()
4. 样式与保存 可以使用 grid() 函数添加自定义网格线,并通过 figure() 设置画布大小:
plt.grid(color="brown" , linestyle=":" )
plt.figure(figsize=(12 , 8 ))
Matplotlib 还支持预设样式表,例如 seaborn 风格:
注意:样式设置应在绘图之前调用。最后,使用 savefig() 保存图表:
plt.savefig("stock_price.png" )
请确保 savefig() 是绘图命令的最后一步。
三、柱状图 (Bar Chart) 虽然前文主要介绍了折线图,但柱状图也是 Matplotlib 中常用的图表类型,适合比较不同类别的数据。本节补充柱状图的绘制方法。
products = ['Product A' , 'Product B' , 'Product C' , 'Product D' ]
sales = [120 , 200 , 150 , 300 ]
plt.figure(figsize=(10 , 6 ))
plt.bar(products, sales, color='skyblue' , edgecolor='black' )
plt.title('Sales Comparison by Product' )
plt.xlabel('Products' )
plt.ylabel('Sales Volume' )
plt.show()
通过 bar() 函数,可以轻松创建垂直柱状图。若需水平柱状图,可使用 barh() 函数。还可以设置柱子的宽度、颜色以及边缘样式来美化图表。
四、直方图 (Histogram) 直方图常用于展示数据的分布情况。与 plot() 不同,hist() 方法需要一组数据作为输入。
stock_return = data['Adj Close' ].pct_change(1 ) * 100
stock_return.dropna(inplace=True )
plt.figure(figsize=(10 , 6 ))
plt.hist(stock_return, bins=100 , color='green' , alpha=0.7 )
plt.title('Distribution of AAPL Daily Return' )
plt.xlabel('Daily Percentage Return' )
plt.ylabel('Frequency' )
plt.show()
bins 参数控制分箱的数量,增加 bins 可以获得更精确的分布结果。直方图可保存为 png、jpeg、pdf 或 svg 格式。
五、散点图 (Scatter Plot) 散点图用于分析两个变量之间的关系。Matplotlib 的 scatter() 函数不仅可以绘制点,还能根据数值调整点的大小和颜色。
import pandas as pd
states = ['California' , 'Texas' , 'Florida' , 'New York' ]
population = [39.5 , 29.1 , 21.5 , 19.5 ]
plt.figure(figsize=(10 , 8 ))
plt.scatter(states, population, s=population*1000 , c=population, cmap='plasma' , alpha=0.6 )
plt.title('US State Population Estimates' )
plt.ylabel('Population in Millions' )
plt.xticks(rotation=90 )
plt.colorbar(label='Population Size' )
plt.show()
scatter() 函数支持 s (大小)、c (颜色) 和 alpha (透明度) 等参数。通过 annotate() 函数可以在特定点添加文本标签:
for i, state in enumerate (states):
plt.annotate(state, (i, population[i]), textcoords="offset points" , xytext=(0 ,10 ), ha='center' )
Jupyter Notebook 中可以使用 %matplotlib notebook 开启交互式模式,允许缩放和平移图表。
六、饼状图 (Pie Chart) 饼状图适合展示部分与整体的比例关系。我们将使用 pie() 函数绘制美国各区域人口占比。
regions = ['South' , 'West' , 'Midwest' , 'Northeast' ]
percentages = [38.26 , 23.87 , 20.82 , 17.06 ]
colors = ['#00FFFF' , '#FF00FF' , '#00FF00' , '#800080' ]
plt.figure(figsize=(8 , 8 ))
plt.pie(percentages, labels=regions, colors=colors, autopct='%1.1f%%' , shadow=True , startangle=90 )
plt.title('US Population by Region' )
plt.axis('equal' )
plt.show()
autopct 参数用于显示百分比数值。explode 参数可以将特定扇区突出显示。shadow=True 可添加阴影效果增强立体感。
七、总结 Matplotlib 是一个功能强大且易于上手的数据可视化工具。本文详细介绍了如何使用 Matplotlib 绘制折线图、柱状图、直方图、散点图和饼状图。掌握了这些基础图表后,结合样式设置、交互模式和保存功能,可以满足大部分日常数据分析的可视化需求。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online