当前位置: 首页 > article >正文

Python Matplotlib 教程-Matplotlib 如何绘制常见图表

Python Matplotlib 如何绘制常见图表

Matplotlib 是 Python 中最流行的数据可视化库之一,提供了多种方式绘制各种图表,如折线图、柱状图、散点图、饼图等。本篇文章将从基础入门开始,逐步介绍如何使用 Matplotlib 绘制这些常见图表,帮助新手快速掌握 Matplotlib 的核心功能。

在这里插入图片描述

目录

  • 折线图
  • 柱状图
  • 散点图
  • 饼图
  • 直方图
  • 箱线图
  • 面积图
  • 热力图
  • 总结与建议

折线图

折线图是最常见的图表类型之一,通常用于显示随时间变化的数据趋势。

基本折线图

import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

# 绘制折线图
plt.plot(x, y, marker='o', linestyle='-', color='blue', label='数据趋势')
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.grid()
plt.show()

多条折线图

x = [1, 2, 3, 4, 5]
y1 = [10, 15, 20, 25, 30]
y2 = [5, 10, 15, 20, 25]

plt.plot(x, y1, marker='o', label='数据1', color='blue')
plt.plot(x, y2, marker='s', label='数据2', color='green')
plt.title('多条折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.grid()
plt.show()

柱状图

柱状图常用于比较多个类别的数据大小。

垂直柱状图

categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 25]

plt.bar(categories, values, color='skyblue')
plt.title('垂直柱状图')
plt.xlabel('类别')
plt.ylabel('值')
plt.grid(axis='y')
plt.show()

水平柱状图

plt.barh(categories, values, color='lightgreen')
plt.title('水平柱状图')
plt.xlabel('值')
plt.ylabel('类别')
plt.grid(axis='x')
plt.show()

分组柱状图

import numpy as np

categories = ['A', 'B', 'C', 'D']
values1 = [10, 20, 15, 25]
values2 = [12, 18, 20, 22]
x = np.arange(len(categories))

plt.bar(x - 0.2, values1, width=0.4, label='组1', color='blue')
plt.bar(x + 0.2, values2, width=0.4, label='组2', color='orange')
plt.xticks(x, categories)
plt.title('分组柱状图')
plt.xlabel('类别')
plt.ylabel('值')
plt.legend()
plt.show()

散点图

散点图用于展示数据点在二维平面上的分布情况。

基本散点图

x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11]
y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78]

plt.scatter(x, y, color='purple')
plt.title('散点图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.grid()
plt.show()

带大小和颜色的散点图

sizes = [20, 50, 100, 200, 300, 400, 500, 800, 1000, 1200]
colors = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

plt.scatter(x, y, s=sizes, c=colors, cmap='viridis', alpha=0.7)
plt.colorbar(label='颜色值')
plt.title('带大小和颜色的散点图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.grid()
plt.show()

饼图

饼图用于展示数据在整体中的占比。

基本饼图

labels = ['A', 'B', 'C', 'D']
sizes = [25, 35, 20, 20]

plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.title('饼图示例')
plt.show()

带分离效果的饼图

explode = [0.1, 0, 0, 0]  # 仅分离第一个部分

plt.pie(sizes, labels=labels, autopct='%1.1f%%', explode=explode, startangle=90, shadow=True)
plt.title('带分离效果的饼图')
plt.show()

直方图

直方图用于展示数据分布的频率。

基本直方图

data = [7, 8, 5, 3, 10, 7, 8, 9, 6, 5, 5, 6, 8, 8, 9]

plt.hist(data, bins=5, color='lightblue', edgecolor='black')
plt.title('直方图示例')
plt.xlabel('区间')
plt.ylabel('频率')
plt.show()

箱线图

箱线图(盒须图)用于展示数据的分布特征,包括中位数、四分位数和异常值。

data = [7, 8, 5, 3, 10, 7, 8, 9, 6, 5, 5, 6, 8, 8, 9]

plt.boxplot(data, patch_artist=True, boxprops=dict(facecolor='lightblue'))
plt.title('箱线图示例')
plt.ylabel('值')
plt.show()

面积图

面积图适合用来显示累积趋势。

x = [1, 2, 3, 4, 5]
y1 = [10, 20, 30, 40, 50]
y2 = [5, 15, 25, 35, 45]

plt.fill_between(x, y1, color='skyblue', alpha=0.5, label='数据1')
plt.fill_between(x, y2, color='orange', alpha=0.5, label='数据2')
plt.title('面积图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.show()

热力图

热力图用于展示数据的强度分布。

import numpy as np

data = np.random.rand(5, 5)
plt.imshow(data, cmap='viridis', interpolation='nearest')
plt.colorbar(label='强度值')
plt.title('热力图示例')
plt.show()

总结与建议

通过本篇文章,你学习了使用 Matplotlib 绘制折线图、柱状图、散点图、饼图、直方图、箱线图、面积图和热力图的基础方法。以下是几点建议:

  1. 理解数据特点:根据数据的特点选择合适的图表类型。
  2. 丰富图表细节:通过自定义颜色、标记和标签,提升图表的表达力。
  3. 实践与尝试:尝试结合多种图表绘制,解决实际问题。

现在就打开你的代码编辑器,开始尝试用 Matplotlib 绘制图表吧!


http://www.kler.cn/a/488331.html

相关文章:

  • WPF中组件之间传递参数的方法研究
  • Spring IoC DI 入门 和 使用
  • C++实现图书管理系统(Qt C++ GUI界面版)
  • vue2日历组件
  • mysql -> 达梦数据迁移(mbp大小写问题兼容)
  • 黄仁勋CES 2025演讲重点内容
  • 信息科技伦理与道德3:智能决策
  • C++二十三种设计模式之解释器模式
  • 【c++实战项目】负载均衡式在线OJ
  • C#里使用libxl读取EXCEL文件的例子
  • 在Ubuntu中使用systemd设置后台自启动服务
  • ffmpeg7.0 aac转pcm
  • Docker入门篇[SpringBoot之Docker实战系列] - 第534篇
  • 商品详情API接口数据解析,API接口系列(示例返回数据(JSON格式))
  • THB6128安森美步进电机驱动芯片
  • leetcode 面试经典 150 题:两数之和
  • 算法题(31):两数之和-输入有序数组
  • 2025年新出炉的MySQL面试题
  • 基于http协议的天气爬虫
  • 计算机视觉算法实战——YOLOv7在姿态识别上的应用
  • 【IDEA】快捷键篇
  • 麦田物语学习笔记:创建DragItem实现物品的拖拽跟随显示
  • 【Flutter】使用ScrollController配合EasyRefresh实现列表预加载:在还未滑动到底部时加载下一页数据
  • 图像传感器的视觉演变与创新
  • Unity自定义编辑器:基于枚举类型动态显示属性
  • sql 函数