画出你的数据故事:Python中Matplotlib使用从基础到高级

摘要: Matplotlib是Python中广泛使用的数据可视化库,它提供了丰富的绘图功能,用于创建各种类型的图表和图形。本文将从入门到精通,详细介绍Matplotlib的使用方法,通过代码示例和中文注释,帮助您掌握如何在不同场景下灵活绘制高质量的图表。

目录

  1. 简介
  2. 安装Matplotlib
  3. 基本绘图
    • 折线图
    • 散点图
    • 柱状图
    • 饼图
  4. 高级绘图
    • 子图
    • 自定义样式
    • 注解和标签
    • 3D绘图
  5. 数据可视化实例
    • 折线图:温度变化趋势
    • 散点图:身高体重关系
    • 柱状图:销售数据分析
  6. Matplotlib扩展
    • Seaborn库
    • Plotly库
  7. 总结

1. 简介

Matplotlib是一个功能强大的Python数据可视化库,它可以用来绘制各种类型的图表,包括折线图、散点图、柱状图、饼图、3D图等。Matplotlib的灵活性和可定制性使得它成为数据科学家和分析师的首选工具。本文将带您从入门到精通,深入探索Matplotlib的各种绘图技巧。

2. 安装Matplotlib

在开始之前,您需要安装Matplotlib库。如果您使用的是Anaconda发行版,通常已经预装了Matplotlib。否则,可以使用以下命令安装:


pip install matplotlib

3. 基本绘图

在Matplotlib中显示中文字体需要特殊的设置,因为默认情况下Matplotlib可能无法正确显示中文字符。以下是一些步骤,让您可以在Matplotlib绘图中正确显示中文字体:

  1. 安装字体库: 首先,确保您的系统上安装了适合的中文字体库,比如微软雅黑、宋体、黑体等。您可以从一些开源字体库中选择,如思源字体、文泉驿字体等。
  2. 配置Matplotlib: 在绘图之前,需要在Matplotlib中设置中文字体。可以使用rcParams来设置字体,这样在整个Matplotlib会话中都会生效。以下是一个设置中文字体的示例代码:
import matplotlib.pyplot as plt# 设置中文字体,修改为您系统上已经安装的中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题

折线图

折线图是显示数据随时间或某种顺序变化的理想选择。以下是一个简单的折线图示例:


import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]
y = [10, 8, 6, 4, 2]plt.plot(x, y, marker='o')
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

image-20230817140658121

散点图

散点图用于显示两个变量之间的关系。以下是一个简单的散点图示例:


import matplotlib.pyplot as pltx = [160, 170, 180, 165, 175]
y = [60, 70, 80, 65, 75]plt.scatter(x, y)
plt.title('散点图示例')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

image-20230817140815517

柱状图

柱状图适用于比较不同类别的数据。以下是一个简单的柱状图示例:


import matplotlib.pyplot as pltcategories = ['A', 'B', 'C', 'D', 'E']
values = [25, 40, 60, 30, 50]plt.bar(categories, values)
plt.title('柱状图示例')
plt.xlabel('类别')
plt.ylabel('值')
plt.show()

image-20230817140843452

饼图

饼图用于显示数据的相对部分。以下是一个简单的饼图示例:


import matplotlib.pyplot as pltlabels = ['A', 'B', 'C', 'D', 'E']
sizes = [15, 30, 25, 10, 20]plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('饼图示例')
plt.show()

image-20230817140905062

4. 高级绘图

子图

Matplotlib允许将多个图表组织在一个大的图中,称为子图。以下是一个子图示例:


import matplotlib.pyplot as plt# 创建一个2x2的子图布局
plt.subplot(2, 2, 1)
plt.plot(x, y)plt.subplot(2, 2, 2)
plt.scatter(x, y)plt.subplot(2, 2, 3)
plt.bar(categories, values)plt.subplot(2, 2, 4)
plt.pie(sizes, labels=labels, autopct='%1.1f%%')plt.tight_layout()  # 调整子图布局
plt.show()

image-20230817140929297

自定义样式

您可以自定义图表的样式,包括颜色、线型、标记等。以下是一个自定义样式示例:


import matplotlib.pyplot as pltplt.plot(x, y, color='red', linestyle='--', marker='o', label='数据')
plt.title('自定义样式示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.show()

image-20230817140949113

注解和标签

您可以在图表中添加注解和标签,以增强可读性。以下是一个带注解和标签的示例:


import matplotlib.pyplot as pltplt.scatter(x, y)
plt.title('注解和标签示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')for i, txt in enumerate(labels):plt.annotate(txt, (x[i], y[i]))plt.show()
image-20230817141014948

3D绘图

Matplotlib还支持绘制3D图表,如3D散点图、3D曲面图等。以下是一个3D散点图的示例:


import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(111, projection='3d')x = [160, 170, 180, 165, 175]
y = [60, 70, 80, 65, 75]
z = [2, 3, 4, 2.5, 3.5]ax.scatter(x, y, z)
ax.set_title('3D散点图示例')
ax.set_xlabel('身高(cm)')
ax.set_ylabel('体重(kg)')
ax.set_zlabel('分数')
plt.show()

image-20230817141047435

5. 数据可视化实例

折线图:温度变化趋势


import matplotlib.pyplot as pltdays = [1, 2, 3, 4, 5, 6, 7]
temperatures = [25, 26, 27, 24, 23, 22, 21]plt.plot(days, temperatures, marker='o')
plt.title('温度变化趋势')
plt.xlabel('日期')
plt.ylabel('温度(摄氏度)')
plt.show()

image-20230817141111051

散点图:身高体重关系


import matplotlib.pyplot as pltheights = [160, 170, 180, 165, 175]
weights = [60, 70, 80, 65, 75]plt.scatter(heights, weights)
plt.title('身高体重关系')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

image-20230817141129218

柱状图:销售数据分析


import matplotlib.pyplot as pltproducts = ['A', 'B', 'C', 'D', 'E']
sales = [100, 150, 80, 200, 120]plt.bar(products, sales)
plt.title('销售数据分析')
plt.xlabel('产品')
plt.ylabel('销售量')
plt.show()

image-20230817141154559

6. Matplotlib扩展

Seaborn库

Seaborn是基于Matplotlib的高级数据可视化库,提供了更美观、更简洁的绘图风格。您可以使用Seaborn来创建统计图表、热图、分布图等。


import seaborn as snssns.set(style="whitegrid")
sns.scatterplot(x=heights, y=weights)
plt.title('Seaborn散点图')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

image-20230817141455669

Plotly库

Plotly是一个交互式数据可视化库,可以生成高度可交互的图表和图形。它支持在线分享和嵌入,适用于创建动态、可交互的数据可视化。


import plotly.express as pxfig = px.scatter(x=heights, y=weights)
fig.update_layout(title='Plotly散点图', xaxis_title='身高(cm)', yaxis_title='体重(kg)')
fig.show()

7. 总结

Matplotlib是Python中强大的数据可视化工具,可以创建各种类型的图表和图形。本文从基础绘图开始,逐步介绍了折线图、散点图、柱状图、饼图等基本图表类型,以及子图、自定义样式、注解和标签、3D绘图等高级技巧。此外,我们还展示了数据可视化实例,展示了如何将Matplotlib应用于实际数据分析中。最后,我们介绍了Matplotlib的扩展库Seaborn和Plotly,让您了解更多可选的数据可视化工具。通过深入学习Matplotlib,您可以更好地展示和传达数据,为决策和分析提供有力的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/84778.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

畜牧兽医虚拟仿真|病禽解剖VR模拟操作演练系统

在生物学课程中,动物解剖是一个重要的组成部分,它能够帮助学生了解动物的生理结构、功能和生活习性,从而更好地认识和保护自然界的生物多样性。然而,传统的动物解剖教学方法往往局限于课堂教学和实验室实践,学生很难真…

docker 搭建私有仓库和制作镜像

目录 1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 1.1 启动mysql镜像 1.2 启动owncloud镜像 1.3 浏览器访问 1.4 总结 2、安装搭建私有仓库 Harbor 2.1 下载docker-compose并赋予执行权限 2.2 磁盘挂载,保存harbor 2.3 修改配置文件…

软件工程(九) UML顺序-活动-状态-通信图

顺序图和后面的一些图,要求没有用例图和类图那么高,但仍然是比较重要的,我们也需要按程度去了解。 1、顺序图 顺序图(sequence diagram, 顺序图),顺序图是一种交互图(interaction diagram),它强调的是对象之间消息发送的顺序,同时显示对象之间的交互。 下面以一个简…

android手机销售app(IDEA,SpringBoot,SSM,MySQL)+支付宝支付+全套视频教程

本项目亮点: 支付宝支付 eCharts柱状图图表数据统计 【项目功能介绍】 本系统包含后台管理和前端app双端系统,后台管理的功能包含: 登录, 退出, 修改管理员信息(基本信息与头像),资源管理,角色管理,资源权限分配,字典管理,用户管理,图书管理,订单管理,订单统计; a…

【ag-grid-vue】基本使用

ag-grid是一款功能和性能强大外观漂亮的表格插件,ag-grid几乎能满足你对数据表格所有需求。固定列、拖动列大小和位置、多表头、自定义排序等等各种常用又必不可少功能。关于收费的问题,绝大部分应用用免费的社区版就够了,ag-grid-community社…

学习ts(十一)本地存储与发布订阅模式

localStorage实现过期时间 目录 准备 安装 npm i rollup typescript rollup-plugin-typescript2// tsconfig.json"module": "ESNext","moduleResolution": "node", "strict": false, // rollup.config.js import …

研磨设计模式day13组合模式

目录 场景 不用模式实现 代码实现 有何问题 解决方案 代码改造 组合模式优缺点 思考 何时选用 场景 不用模式实现 代码实现 叶子对象 package day14组合模式;/*** 叶子对象*/ public class Leaf {/*** 叶子对象的名字*/private String name "";/**…

学习笔记230827--vue项目中,子组件拿不到父组件异步获取数据的问题

问题描述 父组件的数据是请求后台所得&#xff0c;因为是异步数据&#xff0c;就会出现&#xff0c;父组件的值传递过去了&#xff0c;子组件加载不到&#xff0c;拿不到值的问题。 下面从同步数据传递和异步数据传递开始论述问题 1. 父组件传递的是同步数据 父组件 <…

【C++】AVL树(高度平衡二叉树)

AVL树 概念AVL树节点定义AVL树节点插入AVL树四种旋转情况左单旋右单旋先左单旋再右单旋先右单旋后左单旋 元素的插入及控制平衡判断最后节点是否平衡 概念 二叉搜索树虽然可以缩短查找的效率&#xff0c;但如果数据有序或者接近有序二叉搜索树将退化为单支树&#xff0c;查找元…

kali开启SSH服务(简单无比)

我会一直陪着你 1.切换到管理员用户&#xff1a;2.启动SSH服务3.要在Kali Linux上启用SSH服务并修改配置文件&#xff0c;你可以按照以下步骤进行操作&#xff1a;4.查看SSH服务状态是否正常运行&#xff0c;命令为&#xff1a;注意&#xff1a;配置文件有些地方不同&#xff0…

IDC发布《亚太决策支持型分析数据平台评估》报告,亚马逊云科技位列“领导者”类别

日前&#xff0c;领先的IT市场研究和咨询公司IDC发布《2023年亚太地区&#xff08;不含日本&#xff09;决策支持型分析数据平台供应商评估》1报告&#xff0c;亚马逊云科技位列“领导者”类别。IDC认为&#xff0c;亚马逊云科技在解决方案的协同性、敏捷性、完整性、及时性、经…

css之文字连续光影特效、动画、scss

文章目录 效果图htmlscsscss 效果图 html <div><span>C</span><span>O</span><span>L</span><span>O</span><span>R</span><span>F</span><span>U</span><span>L</span&…