Python Matplotlib:基本图表绘制指南

Python Matplotlib:基本图表绘制指南

Matplotlib 是 Python 中一个非常流行的绘图库,它以简单易用和功能丰富而闻名,适合各种场景的数据可视化需求。在数据分析和数据科学领域,Matplotlib 是我们展示数据的有力工具。本文将详细讲解如何使用 Matplotlib 绘制常见图表,包括折线图、散点图、柱状图、饼图和直方图等。

在这里插入图片描述

1. Matplotlib 简介和安装

Matplotlib 是一个 Python 库,可以轻松绘制静态、动态和交互式图表。它提供了灵活的绘图功能,尤其在数据科学和数据分析领域应用广泛。

安装 Matplotlib

在安装 Python 环境后,可以使用 pip 安装 Matplotlib:

pip install matplotlib

安装完成后,可以通过以下方式导入 Matplotlib:

import matplotlib.pyplot as plt

2. 绘制基础图表

2.1 折线图(Line Plot)

折线图通常用于展示数据随时间的变化,或观察变量之间的关系。绘制折线图的基本语法如下:

import matplotlib.pyplot as plt# 定义数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 绘制折线图
plt.plot(x, y, marker='o', color='b', linestyle='-', linewidth=2, markersize=6)
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('折线图示例')
plt.grid(True)  # 添加网格
plt.show()
  • plt.plot:定义折线图的线条颜色、线型等。
  • marker:指定点的样式,例如 'o' 为圆形,'*' 为星形。
  • color:线条颜色,如 b 表示蓝色。
  • linestyle:线条样式,'-' 为实线。
  • grid(True):显示网格。
2.2 散点图(Scatter Plot)

散点图适合表示数据的离散分布情况,可用于发现变量之间的关系。绘制散点图的代码如下:

import matplotlib.pyplot as plt# 定义数据
x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 4, 6, 7, 8]# 绘制散点图
plt.scatter(x, y, color='r', marker='x')
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('散点图示例')
plt.show()
  • plt.scatter:创建散点图,允许使用不同的点样式和颜色。
  • marker='x':指定点的样式为“x”形。
2.3 柱状图(Bar Chart)

柱状图用于比较不同类别的数据,可以是水平或垂直的。

import matplotlib.pyplot as plt# 定义数据
categories = ['A', 'B', 'C', 'D']
values = [10, 15, 7, 20]# 绘制柱状图
plt.bar(categories, values, color='skyblue')
plt.xlabel('类别')
plt.ylabel('值')
plt.title('柱状图示例')
plt.show()
  • plt.bar:创建柱状图,指定颜色、宽度等。
  • color:柱子的颜色,可以使用名称如 skyblue 或色号。
2.4 水平柱状图

水平柱状图与柱状图类似,但条形是横向的。

import matplotlib.pyplot as plt# 定义数据
categories = ['A', 'B', 'C', 'D']
values = [10, 15, 7, 20]# 绘制水平柱状图
plt.barh(categories, values, color='coral')
plt.xlabel('值')
plt.ylabel('类别')
plt.title('水平柱状图示例')
plt.show()
  • plt.barh:创建水平柱状图,与 bar 类似,但在 X 和 Y 轴的定义上有区别。
2.5 饼图(Pie Chart)

饼图主要用于展示各个部分占整体的比例。它在展示市场份额、人口分布等场景中常用。

import matplotlib.pyplot as plt# 定义数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
explode = (0, 0.1, 0, 0)  # 突出显示第二块# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)
plt.title('饼图示例')
plt.show()
  • explode:设置高亮的分离程度。
  • autopct='%1.1f%%':显示每个扇形的百分比。
  • shadow:添加阴影效果。

3. 高级图表

3.1 直方图(Histogram)

直方图通常用于展示数据的分布情况,比如查看数据在各个区间上的频率。

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
data = np.random.randn(1000)# 绘制直方图
plt.hist(data, bins=30, color='purple', edgecolor='black')
plt.xlabel('值')
plt.ylabel('频率')
plt.title('直方图示例')
plt.show()
  • plt.hist:绘制直方图。
  • bins=30:将数据分为 30 个区间。
  • edgecolor='black':设置条形边框颜色为黑色。
3.2 箱线图(Box Plot)

箱线图用于显示数据的离散分布和异常值情况,特别适合于对比不同组的分布。

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
data = [np.random.normal(0, std, 100) for std in range(1, 4)]# 绘制箱线图
plt.boxplot(data, patch_artist=True, notch=True)
plt.xlabel('组别')
plt.ylabel('值')
plt.title('箱线图示例')
plt.show()
  • patch_artist=True:填充箱体颜色。
  • notch=True:添加凹槽以标记中位数。
3.3 热力图(Heatmap)

热力图可以显示变量之间的相关性或密度分布,非常适合分析大规模数据的关系。

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
data = np.random.rand(10, 10)# 绘制热力图
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()  # 添加颜色条
plt.title('热力图示例')
plt.show()
  • cmap='hot':颜色映射设置为“热”色调。
  • colorbar():添加颜色条。

4. 图表的自定义与优化

4.1 设置图例

图例可以帮助我们更好地理解数据的含义。通过 plt.legend() 可以轻松添加图例。

import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 8, 27, 64, 125]# 绘制多条折线图
plt.plot(x, y1, label='平方', color='blue')
plt.plot(x, y2, label='立方', color='green')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('带图例的折线图')
plt.legend()  # 添加图例
plt.show()
4.2 使用子图(Subplot)

在一个窗口中显示多个图,可以使用 plt.subplot

import matplotlib.pyplot as plt# 创建 2x2 子图
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3], [1, 4, 9])
plt.title('子图1')plt.subplot(2, 2, 2)
plt.bar([1, 2, 3], [1, 2, 3])
plt.title('子图2')plt.subplot(2, 2, 3)
plt.scatter([1, 2, 3], [1, 4, 9])
plt.title('子图3')plt.subplot(2, 2, 4)
plt.hist([1, 2, 3, 1, 2, 1])
plt.title('子图4')plt.tight_layout()  # 自动调整子图间的间距
plt.show()

5. 总结

通过本文的介绍,大家可以初步掌握 Matplotlib 的基本使用方法和各种常用图表的绘制技巧。

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

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

相关文章

开源库 FloatingActionButton

开源库FloatingActionButton Github:https://github.com/Clans/FloatingActionButton 这个库是在前面这个库android-floating-action-button的基础上修改的,增加了一些更强大和实用的特性。 特性: Android 5.0 以上点击会有水波纹效果 可以选择自定义…

【Hello World 】

【Hello World 】! C语言实现C实现Java实现Python实现 💐The Begin💐点点关注,收藏不迷路💐 几乎每一个程序员都是从Hello World!开始自己的程序人生,作为一个初学编程的小朋友,也需要先编程来输出Hello Wo…

从实验室到生活:超分子水凝胶湿电发电机的应用之路

大家好!今天来了解一种新型的绿色湿电发电机(MEG)——《Green moisture-electric generator based on supramolecular hydrogel with tens of milliamp electricity toward practical applications》发表于《nature communications》&#xf…

零基础学习Java AI Spring AI

零基础学习Java AI Spring AI 随着人工智能(AI)技术的超速发展,越来越多的开发者开始将目光投向AI应用的开发。作为一名java程序员,如果不转型就会面临淘汰,程序员的世界就是这么的实现。 现在,市面上大多…

【周末推荐】Windows无缝连接iPhone

关注“ONE生产力”,获取更多精彩推荐! 又到了周末推荐时间了,今天我们介绍一个Windows内置的功能,能够帮助大家将自己的电脑和iPhone连接在一起。 很多用Windows的小伙伴羡慕macOS可以和iPhone无缝连接,轻松阅读和回…

OV5640摄像模组从入门到精通(1)

本文内容参考: 《OmniVision OV5640 datasheet》 《OV5640 Camera Module — Software Application Notes》 OV5640学习_ov5640手册-CSDN博客 OV5640手册解读-CSDN博客 【FPGA】摄像头模块OV5640-CSDN博客 Camera开发-OV5640(MIPI)-CSDN博客 特此致谢&#x…

el-table type=“selection“换页多选数据丢失的解决办法

element里有一个 reserve-selection属性 设置以后就可以保留之前选中的选项&#xff0c;但还要设置row-key 代码如下&#xff1a; <el-tableref"mytable":data"HostRows"borderv-loading"loading"element-loading-text"正在加载中...&q…

CPU算法分析LiteAIServer视频智能分析平台视频诊断对比度检测:提升视频监控质量的关键技术

在现代安防、工业生产、智能家居等领域&#xff0c;视频监控系统扮演着至关重要的角色。然而&#xff0c;视频质量的好坏直接影响到监控效果&#xff0c;而对比度作为衡量图像质量的重要指标之一&#xff0c;对于视频内容的清晰度和细节表现至关重要。为了应对这一挑战&#xf…

双向 Type-C 转 DP 线:高清视频输出的灵活解决方案

在当今数字化生活中&#xff0c;人们对高效能和高清晰度的需求日益增长。双向 Type-C 转 DP 线应运而生&#xff0c;它以其灵活便捷的特点&#xff0c;为用户提供了一种高清视频输出的解决方案。本文将详细介绍双向 Type-C 转 DP 线的技术原理、适用设备、性能参数以及市场选择…

萤石设备视频接入平台EasyCVR私有化部署视频平台高速公路视频上云的高效解决方案

经济的迅猛发展带来了高速公路使用频率的激增&#xff0c;其封闭、立交和高速的特性变得更加显著。然而&#xff0c;传统的人工巡查方式已不足以应对当前高速公路的监控挑战&#xff0c;监控盲点和响应速度慢成为突出问题。比如&#xff0c;非法占用紧急车道的情况屡见不鲜&…

Spring Boot在信息学科平台建设中的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理基于保密信息学科平台系统的相关信息成为必…

Chrome与夸克的安全性对比

在当今数字化时代&#xff0c;浏览器的安全性对于用户来说至关重要。Chrome和夸克作为两款流行的浏览器&#xff0c;各有其特点和优势。本文将对这两款浏览器的安全性进行详细对比&#xff0c;帮助用户更好地了解它们之间的差异。&#xff08;本文由https://www.chromegw.com/的…

穿越数据迷宫

第一章 在未来的世界里&#xff0c;人类的生活已经被高度数字化。互联网不再是简单的信息交换平台&#xff0c;而是成为了一个庞大的虚拟世界——“数据迷宫”。在这个世界里&#xff0c;每个人都有一个独特的数字身份&#xff0c;他们的生活、工作、娱乐都离不开这个虚拟空间…

日程安排工具Cal.com的安装

什么是 Cal.com (原 Calendso) ? Cal.com 是一个现代化、灵活且功能强大的开源日程管理平台&#xff0c;旨在为用户提供全面的控制权和定制能力&#xff0c;是适合每个人的活动日程安排程序&#xff0c;被誉为 Calendly 的继任者。它的最大特点是完全开源&#xff0c;用户可以…

论文阅读:Computational Long Exposure Mobile Photography (二)

这篇文章是谷歌发表在 2023 ACM transaction on Graphic 上的一篇文章&#xff0c;介绍如何在手机摄影中实现长曝光的一些拍摄效果。 Abstract 长曝光摄影能拍出令人惊叹的影像&#xff0c;用运动模糊来呈现场景中的移动元素。它通常有两种模式&#xff0c;分别产生前景模糊或…

Swift雨燕蜂窝无线通信系统介绍

本文博客链接:jdh99-CSDN博客,作者:jdh,转载请注明. 1. 概述 物联网小无线通信技术众多&#xff0c;其中大多是小范围小规模的无线通信技术&#xff0c;而行业难点是如何做到广覆盖、大容量、低功耗。 针对以上难点&#xff0c;宏讯物联研发了Swift雨燕蜂窝无线通信技术&…

基于双向长短期记忆网络(BiLSTM)的时间序列数据预测,15个输入1个输出,可以更改数据集,MATLAB代码

1. 数据收集与预处理 数据清洗&#xff1a;处理缺失值、异常值等。特征工程&#xff1a;提取有助于预测的特征。数据标准化&#xff1a;将时间序列数据标准化&#xff0c;使其具有零均值和单位方差&#xff0c;有助于模型训练。滑动窗口划分&#xff1a;将时间序列数据划分为多…

VMware Workstation 17.0虚拟机安装Ubuntu Server 22.04.5 LTS并配置SSH与XFTP详细过程

文章目录 一、安装VMware虚拟机二、在虚拟机中安装Ubuntu1、下载镜像文件2、“创建新的虚拟机”操作过程3、首次进入虚拟机的初始化配置 三、连接SSH1、下载XShell软件2、使用XShell连接虚拟机服务器 四、连接XFTP1、下载XFTP软件2、使用XFTP连接虚拟机服务器 一、安装VMware虚…

【Linux】编辑器vim 与 编译器gcc/g++

目录 一、编辑器vim&#xff1a; 1、对vim初步理解&#xff1a; 2、vim的模式&#xff1a; 3、进入与退出&#xff1a; 4、vim命令模式下的指令集&#xff1a; 移动光标&#xff1a; 删除&#xff1a; cv&#xff1a; 撤销&#xff1a; 其他&#xff1a; 5、vim底行模…

【单峰序列】

题目 代码 #include <bits/stdc.h> using namespace std;const int mod 1000000007;//快速幂求2的x次方 long long f(int x) {long long ans 1;long long base 2;while (x) {if (x % 2 1) {ans (ans * base) % mod; }base (base * base) % mod;x / 2; }return an…