Python中使用matplotlib绘制各类图表示例

news2024/12/23 0:15:19

折线图

折线图是一种用于表示数据随时间、变量或其他连续性变化的趋势的图表。通过在横轴上放置时间或如此类似的连续变量,可以在纵轴上放置数据点的值,从而捕捉到数据随时间发生的变化。折线图可以用于比较不同变量的趋势,轻松地发现不同的变量之间的差异。

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建一个绘图窗口,大小为8x6英寸
plt.figure(figsize=(8, 6))

# 绘制折线图
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')

# 添加图例,显示在右上角
plt.legend(loc='upper right')

# 添加标题和轴标签
plt.title('Sin and Cos functions')
plt.xlabel('x')
plt.ylabel('y')

# 显示网格线
plt.grid(True)

# 保存图像,支持多种格式,如PNG、PDF、SVG等
plt.savefig('line_plot.png', dpi=300)

# 显示图像
plt.show()

示例结果:

在这里插入图片描述

参数说明:

  • plt.figure(figsize=(8, 6)):创建一个大小为8x6英寸的绘图窗口。
  • plt.plot(x, y1, label='sin(x)'):绘制折线图,x和y1是数据点的x坐标和y坐标,label是该折线的标签,用于图例中显示。
  • plt.legend(loc='upper right'):添加图例,loc参数指定图例的位置,可以是字符串’upper right’等也可以是数字0~10。
  • plt.title('Sin and Cos functions'):添加标题。
  • plt.xlabel('x'):添加x轴标签。
  • plt.ylabel('y'):添加y轴标签。
  • plt.grid(True):显示网格线。
  • plt.savefig('line_plot.png', dpi=300):保存图像到文件line_plot.png中,dpi参数指定输出分辨率。

柱状图

柱状图是一种用于比较不同组数据之间差异的图表。它通过将每个数据组的值表示为柱形的高度来显示差异。柱状图可用于比较不同分类数据的数量、频率或比率,用于显示该类别数据的相对大小。

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = ['A', 'B', 'C', 'D', 'E']
y1 = [3, 7, 2, 5, 9]
y2 = [5, 2, 6, 3, 1]

# 创建一个绘图窗口,大小为8x6英寸
plt.figure(figsize=(8, 6))

# 绘制柱状图
plt.bar(x, y1, color='lightblue', label='Group 1')
plt.bar(x, y2, color='pink', bottom=y1, label='Group 2')

# 添加图例,显示在右上角
plt.legend(loc='upper right')

# 添加标题和轴标签
plt.title('Bar Plot')
plt.xlabel('Category')
plt.ylabel('Value')

# 显示图像
plt.show()

示例结果:

柱状图

参数说明:

  • plt.bar(x, y1, color='lightblue', label='Group 1'):绘制柱状图,x是类别列表,y1是每个类别对应的值,label是该组数据的标签,用于图例中显示。color参数指定柱状图的颜色。
  • plt.bar(x, y2, color='pink', bottom=y1, label='Group 2'):绘制第二组数据的柱状图,bottom参数指定该组数据的底部位置。
  • plt.legend(loc='upper right'):添加图例,loc参数指定图例的位置,可以是字符串’upper right’等也可以是数字0~10。
  • plt.title('Bar Plot'):添加标题。
  • plt.xlabel('Category'):添加x轴标签。
  • plt.ylabel('Value'):添加y轴标签。

直方图

直方图用于展示数据的分布情况,通常用于分析数据集的偏态和峰态等特征。

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(42)
data = np.random.normal(size=1000)

# 绘制直方图
fig, ax = plt.subplots()
ax.hist(data, bins=30, density=True, alpha=0.5, color='blue')

# 设置图表标题和坐标轴标签
ax.set_title('Histogram of Random Data', fontsize=16)
ax.set_xlabel('Value', fontsize=14)
ax.set_ylabel('Frequency', fontsize=14)

# 设置坐标轴刻度标签大小
ax.tick_params(axis='both', which='major', labelsize=12)

# 显示图表
plt.show()

示例结果:
在这里插入图片描述

参数说明:

  • data:要绘制的数据集。
  • bins:直方图中的箱数。
  • density:是否将频数转换为概率密度。
  • alpha:直方图的透明度。
  • color:直方图的颜色。
  • ax.set_title():设置图表标题。
  • ax.set_xlabel():设置x轴标签。
  • ax.set_ylabel():设置y轴标签。
  • ax.tick_params():设置坐标轴刻度标签的大小。

饼图

饼图用于展示数据的占比情况,通常用于比较不同类别或部分之间的占比情况。

import matplotlib.pyplot as plt

# 生成数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
colors = ['red', 'green', 'blue', 'yellow']

# 绘制饼图
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90)

# 设置图表标题
ax.set_title('Pie Chart of Data', fontsize=16)

# 显示图表
plt.show()

示例结果:
在这里插入图片描述

参数说明:

  • labels:数据的类别标签。
  • sizes:数据的占比。
  • colors:数据的颜色。
  • autopct:占比的显示格式。
  • startangle:饼图的起始角度。
  • ax.set_title():设置图表标题。

括线图

括线图是一种用于比较不同组数据分布情况的图表。它用于显示数据的中位数、上下四分位数、最小值和最大值,可以帮助我们了解数据分布的形状、位置和离散程度。在括线图中,每个箱子代表数据的25%~75%分位数,中位线是每个箱子中的中位数,普通线是每个箱子之外的最小值和最大值。

import matplotlib.pyplot as plt

# 生成数据
data = [[3.4, 4.1, 3.8, 2.0], [2.3, 4.5, 1.2, 4.3]]

# 创建一个绘图窗口,大小为8x6英寸
plt.figure(figsize=(8, 6))

# 绘制括线图
bp = plt.boxplot(data, widths=0.5, patch_artist=True, notch=True)

# 设置每个箱线图的颜色和填充
for patch, color in zip(bp['boxes'], ['lightblue', 'pink']):
    patch.set_facecolor(color)

# 添加标题和轴标签
plt.title('Box Plot')
plt.xlabel('Group')
plt.ylabel('Data')

# 显示图像
plt.show()

示例结果:

在这里插入图片描述

参数说明:

  • plt.boxplot(data, widths=0.5, patch_artist=True, notch=True):绘制括线图,data是一个包含两个列表的列表,表示两组数据。widths参数指定每个箱线图的宽度,patch_artist参数指定使用补丁来填充箱线图,notch参数指定绘制出箱线图中的记分牌。
  • patch.set_facecolor(color):设置每个箱线图的颜色和填充,zip函数可以将两个列表打包成一个元组,逐个取出元组的值。
  • plt.title('Box Plot'):添加标题。
  • plt.xlabel('Group'):添加x轴标签。
  • plt.ylabel('Data'):添加y轴标签。

散点图

散点图是一种用于展示两个变量之间关系的图表。每个点代表一个数据点,它的位置由变量的值确定。散点图可用于寻找变量之间的相关性,并显示数据中的任何异常值或离群值。

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.random.normal(size=100)
y = np.random.normal(size=100)

# 创建一个绘图窗口,大小为8x6英寸
plt.figure(figsize=(8, 6))

# 绘制散点图
plt.scatter(x, y, s=50, alpha=0.5)

# 添加标题和轴标签
plt.title('Scatter Plot')
plt.xlabel('x')
plt.ylabel('y')

# 显示图像
plt.show()

示例结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GM4O5nQt-1686898200230)(null)]

参数说明:

  • plt.scatter(x, y, s=50, alpha=0.5):绘制散点图,x和y是数据点的x坐标和y坐标,s指定点的大小,alpha指定点的透明度。
  • plt.title('Scatter Plot'):添加标题。
  • plt.xlabel('x'):添加x轴标签。
  • plt.ylabel('y'):添加y轴标签。

箱线图

箱线图用于展示数据的分布情况和异常值等信息,通常用于比较不同数据集之间的差异。

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(42)
data = np.random.normal(size=(100, 4), loc=0, scale=1.5)

# 绘制箱线图
fig, ax = plt.subplots()
ax.boxplot(data, notch=True, sym='o', vert=True, whis=1.5)

# 设置图表标题和坐标轴标签
ax.set_title('Boxplot of Random Data', fontsize=16)
ax.set_xlabel('Variable', fontsize=14)
ax.set_ylabel('Value', fontsize=14)

# 设置坐标轴刻度标签大小
ax.tick_params(axis='both', which='major', labelsize=12)

# 显示图表
plt.show()

示例结果:
在这里插入图片描述

参数说明:

  • data:要绘制的数据集。
  • notch:是否绘制缺口。
  • sym:异常值的标记形状。
  • vert:是否垂直绘制箱线图。
  • whis:箱线图的须长度,以四分位距的1.5倍为标准。
  • ax.set_title():设置图表标题。
  • ax.set_xlabel():设置x轴标签。
  • ax.set_ylabel():设置y轴标签。
  • ax.tick_params():设置坐标轴刻度标签的大小。

热力图

热力图用于展示数据之间的关系和趋势,通常用于分析二维数据的相关性和变化。

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(42)
data = np.random.normal(size=(10, 10), loc=0, scale=1)

# 绘制热力图
fig, ax = plt.subplots()
im = ax.imshow(data, cmap='YlOrRd')

# 添加颜色条
cbar = ax.figure.colorbar(im, ax=ax)
cbar.ax.set_ylabel('Values', rotation=-90, va='bottom')

# 添加轴标签和标题
ax.set_xticks(np.arange(len(data)))
ax.set_yticks(np.arange(len(data)))
ax.set_xticklabels(np.arange(1, len(data)+1))
ax.set_yticklabels(np.arange(1, len(data)+1))
ax.set_title('Heatmap of Random Data', fontsize=16)

# 显示图表
plt.show()

示例结果:
在这里插入图片描述

参数说明:

  • data:要绘制的数据集。
  • cmap:颜色映射,用于表示数据大小的颜色范围。
  • ax.imshow():绘制热力图。
  • cbar.ax.set_ylabel():设置颜色条的标签。
  • ax.set_xticks():设置x轴刻度标签。
  • ax.set_yticks():设置y轴刻度标签。
  • ax.set_xticklabels():设置x轴刻度标签的标签名。
  • ax.set_yticklabels():设置y轴刻度标签的标签名。
  • ax.set_title():设置图表标题。

树状图

树状图用于展示数据之间的层次结构和关系,通常用于分析树形结构和组织架构等问题。

import matplotlib.pyplot as plt

# 绘制树状图
fig, ax = plt.subplots()

ax.barh('CEO', 1, color='black')
ax.barh('VP1', 0.8, left=1, color='gray')
ax.barh('VP2', 0.8, left=1, color='gray')
ax.barh('Manager1', 0.6, left=1.8, color='gray')
ax.barh('Manager2', 0.6, left=1.8, color='gray')
ax.barh('Manager3', 0.6, left=1.8, color='gray')
ax.barh('Supervisor1', 0.4, left=2.4, color='gray')
ax.barh('Supervisor2', 0.4, left=2.4, color='gray')
ax.barh('Supervisor3', 0.4, left=2.4, color='gray')
ax.barh('Staff1', 0.2, left=3.2, color='gray')
ax.barh('Staff2', 0.2, left=3.2, color='gray')
ax.barh('Staff3', 0.2, left=3.2, color='gray')
ax.barh('Staff4', 0.2, left=3.2, color='gray')

# 设置轴标签和标题
ax.set_yticks([])
ax.set_xlim(0, 4)
ax.set_xlabel('Hierarchy', fontsize=14)
ax.set_title('Tree Diagram of Organization', fontsize=16)

# 显示图表
plt.show()

示例结果:
在这里插入图片描述

参数说明:

  • ax.barh():绘制水平条形图。
  • ax.set_yticks():设置y轴刻度标签。
  • ax.set_xlim():设置x轴坐标范围。
  • ax.set_xlabel():设置x轴标签。
  • ax.set_title():设置图表标题。

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

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

相关文章

不写代码如果解决Jmeter跨线程组取参数值问题?

目录 前言 定义属性法 文件转接法 总结: 前言 如果你工作中已经在用jmeter做接口测试,或性能测试了,你可能会遇到一个麻烦。 那就是jmeter的变量值不能跨线程组传递。 看,官方就已经给出了解释: 这个不是jmeter的…

机器学习——识别足球和橄榄球

一、选题的背景 橄榄球起源于足球,二者即相似又有所区别。计算机技术发展至今,AI技术也有了极大的进步,通过机器学习不断的训练,AI对于足球和橄榄球的识别能力可以帮助人们对足球和橄榄球的分辨。机器学习是一种智能技术&#xff…

虚拟机使用docker安装MySql出现的问题,Navicat连不上MySql

文章目录 一、问题引入 二、问题分析 三、问题解决 ​四、总结 一、问题引入 今天是学习谷粒商城的第一天,既然是第一天,肯定就是先对项目先有个基本的了解,比如是项目所用到的技术栈,项目整体的架构等,还对分布…

操作系统闲谈09——内存管理算法

操作系统闲谈09——内存管理算法 Buddy伙伴系统 假设存在一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页…

华为OD机试真题B卷 JavaScript 实现【乱序整数序列两数之和绝对值最小】,附详细解题思路

一、题目描述 给定一个随机的整数(可能存在正整数和负整数)数组 nums,请你在该数组中找出两个数,其和的绝对值(|nums[x]nums[y]|)为最小值,并返回这个两个数(按从小到大返回)以及绝对值。 每种…

Android 行业就业难! 我是否该负重前行~

不知从何时开始,互联网市场岗位开始以收缩趋势进行发展,使得不少互联网行业的从业者面临者工作难找的难题,对于我们开发人群来说很不友好。 以前可以靠着跳槽实现涨薪梦,而如今是能不动就不动,能稳住是最好。 为什么这…

Docker——安装MySQL

一、安装并拉取MySQL镜像 先把docker启动起来 systemctl restart docker systemctl status docker 安装MySQL docker search mysql拉取镜像, 如果拉取不成功或者显示超时,可以去配置加速镜像源。 二、查看本地镜像并启动MySQL 但是光有镜像没有把镜像…

Redis面试之数据类型及底层原理

废话不多说直接上类型 string(字符串) hash(哈希) list(列表) set(集合) zset(有序集合) stream(流) geospatial(地…

CRM软件有哪些?这9款值得推荐

业内有一句流传已久的话:你的左手不知道你的右手在做什么。同一个企业内部,不同部门之间往往存在信息不同步,数据不对称的情况,比如销售和营销部门关于某个市场活动所带来的效果产生分歧。CRM软件的存在就可以解决这类问题。 在正…

实验4 Cache性能分析【计算机系统结构】

实验4 Cache性能分析【计算机系统结构】 前言推荐实验四 Cache性能分析1 实验目的2 实验平台3 实验内容和步骤3.1 Cache容量对不命中率的影响3.2 相联度对不命中率的影响3.3 Cache块大小对不命中率的影响3.4 替换算法对不命中率的影响 4 实验总结与心得5 请思考 最后 前言 202…

8年测试工程师分享,我是怎么开展性能测试的(基础篇)

第一节 测试的一般步骤 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的,在功能还不够完备的情况下没有多大的意义(后期功能完善上会对系统的性能有影响,过早进入性能测试会出现测试结果不准确、浪费测试资源)&…

足不出户怎么在家赚钱,暑假在家别闲着,给自己赚点生活费吧

在当今快节奏的现代生活中,人们面临着越来越大的竞争压力。为了过上舒适的生活、提前退休、创业或增加收入,许多人都希望能够在家中赚钱。那么,在家里如何可以找到赚钱的项目呢?本文将为您详细介绍一些方法。 一、在家工作有很多好…

《计算之魂》读书笔记——第2章,从递推到递归

我们人类的固有思维方式常常是出于直观的,由近及远、从少到多,这样的思维方式让我们很容易理解具体的事物,却也限制了我们的抽象思维,所以当我们理解远离我们生活经验的事物时,就容易出现障碍。我们人类这种自底向上、…

调用万维易源实现天气预测

作者介绍 房庚晨,男,西安工程大学电子信息学院,22级研究生 研究方向:机器视觉与人工智能 电子邮件:1292475736qq.com 王泽宇,男,西安工程大学电子信息学院,2022级研究生&#xff0…

easyui03(tree后台工作)

一.数据库脚本 create table TB_MODULE ( id NUMBER not null, pid NUMBER not null, text VARCHAR2(150) not null, iconcls VARCHAR2(100) not null, url VARCHAR2(100), sort NUMBER not null ) insert into TB_MODULE (id, pid, text, icon…

Android音视频开发实战01-环境搭建

一,FFmpeg介绍 FFmpeg 是一款流行的开源多媒体处理工具,它可以用于转换、编辑、录制和流式传输音视频文件。FFmpeg 具有广泛的应用场景,包括视频编解码、格式转换、裁剪、合并、滤镜等等。官网:https://ffmpeg.org/ FFmpeg 支持各种常见的音视频格式&a…

设置论文中的图、表的题注(小记)

参考b站:毕业论文图表如何自动编号/word图表自动编号/图表编号自动更新 其中,更新图表序号 视频使用ctrlp进入打印再退出,也可以使用altf9进行更新 设置论文中的图、表的题注 step1:设置章节1.1 章节设置字体样式,选择标题11.2 章…

中国人民大学与加拿大女王大学金融硕士项目就像一束光,照亮你的春夏秋冬

不要因为看到别人发光,就默认自己的暗淡。每个人都有自己的闪光时刻,或早或晚。只要努力奋进,你也会拥有。针对金融行业计划在职的人员来说,中国人民大学与加拿大女王大学金融硕士项目就像一束光,照亮了我们的春夏秋冬…

赋能全栈软件,开源软件协调,我对英特尔有了全新认知

文章目录 一、前言二、培养开源文化三、现场展区体验四、软硬协同分论坛,和社区开发者共建生态五、快来加入开源社区吧 一、前言 “开源赋能 普惠未来”,2023 年 6 月 11 日到 13 日,我有幸参加了 2023 开放原子全球开源峰会。 “赋能中国软…

数据结构算法刷题(28)回溯组合型和全排列

剪枝技巧: 思路:剪枝的特点是找特定长度的子集。首先确定大框架,当path的长度等于k的时候,就要更新答案并且return。然后在进行path的元素选择,这里采用倒叙,从i到d(dk-len(path))倒…