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

python之matplotlib入门初体验:使用Matplotlib进行简单的图形绘制

目录

  • 绘制简单的折线图
    • 1.1 修改标签文字和线条粗细
    • 1.2 校正图形
    • 1.3 使用内置样式
    • 1.4 使用scatter()绘制散点图并设置样式
    • 1.5 使用scatter()绘制一系列点
    • 1.6 python循环自动计算数据
    • 1.7 自定义颜色
    • 1.8 使用颜色映射
    • 1.9 自动保存图表
    • 练习题

绘制简单的折线图

绘制一个简单折线图,使用模块pyplopt,该模块中包含很多生成图表的函数。

  • subplot()函数: 在一张图片中绘制一个或者多个图表。变量fig表示画窗,ax即axex,代表画窗中创建的笛卡尔坐标区。

  • plot()方法: 尝试根据给定的数据以有意义的方式绘制图表。

  • plt.show()方法: 打开matplotlib查看器并显示绘制的图片。

import matplotlib as pltsquares = [1,4,9,16,25]
fig,ax = plt.subplots()
ax.plot(squares)plt.show()

在这里插入图片描述

1.1 修改标签文字和线条粗细

对图表进行标签的大小、线条粗细进行调整。

  • linewidth参数:绘制的线条粗细。
  • set_title()函数:给图表制定标题。
  • fontsize参数:指定图表中各种文字的大小。
  • tick_params() 函数 : 设置刻度的样式。其中指定的实参将影响x轴和y轴上的刻度(axes=‘both’ ),并将刻度标记的字号设置为14(labelsize=14)。

注:由于显示中文出现错误时的解决方案:

在代码中添加如下语句 —— 设置字体为:SimHei(黑体)
plt.rcParams[‘font.sans-serif’]=[‘SimHei’]

解决方案

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']
squares = [1,4,9,16,25]
fig,ax = plt.subplots()
ax.plot(squares,linewidth=3)ax.set_title("平方数",fontsize = 24)
ax.set_xlabel('值',fontsize=14)
ax.set_ylabel('值的平方',fontsize=14)ax.tick_params(axis='both',labelsize=14)plt.show()

在这里插入图片描述

1.2 校正图形

可以看到图片中横轴x对应的平方数都是不准确的,因此需要对图片进行校正。

向plot() 提供一系列数时,它假设第一个数据点对应的坐标值为0,但这里第一个点对应的 值为1。为改变这种默认行为,可向plot() 同时提供输入值和输出值。

  • 设置plot函数的输入值为从1开始到5结束的列表,然后把输入输出列表同时传入函数中。
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']
squares = [1,4,9,16,25]
input_values = [1,2,3,4,5]
fig,ax = plt.subplots()
ax.plot(input_values,squares,linewidth=3)ax.set_title("平方数",fontsize = 24)
ax.set_xlabel('值',fontsize=14)
ax.set_ylabel('值的平方',fontsize=14)ax.tick_params(axis='both',labelsize=14)plt.show()

在这里插入图片描述

1.3 使用内置样式

可以使用matplotlib中内置的图标样式进行图像的绘制,打印一下已有的样式类型:

print(plt.style.available)

[‘Solarize_Light2’, ‘_classic_test_patch’, ‘_mpl-gallery’, ‘_mpl-gallery-nogrid’, ‘bmh’, ‘classic’, ‘dark_background’, ‘fast’, ‘fivethirtyeight’, ‘ggplot’, ‘grayscale’, ‘seaborn-v0_8’, ‘seaborn-v0_8-bright’, ‘seaborn-v0_8-colorblind’, ‘seaborn-v0_8-dark’, ‘seaborn-v0_8-dark-palette’, ‘seaborn-v0_8-darkgrid’, ‘seaborn-v0_8-deep’, ‘seaborn-v0_8-muted’, ‘seaborn-v0_8-notebook’, ‘seaborn-v0_8-paper’, ‘seaborn-v0_8-pastel’, ‘seaborn-v0_8-poster’, ‘seaborn-v0_8-talk’, ‘seaborn-v0_8-ticks’, ‘seaborn-v0_8-white’, ‘seaborn-v0_8-whitegrid’, ‘tableau-colorblind10’]

import matplotlib.pyplot as plt
print(plt.style.available)
squares = [1,4,9,16,25]
input_values = [1,2,3,4,5]plt.style.use('seaborn-v0_8')fig,ax = plt.subplots()
ax.plot(input_values,squares,linewidth=3)ax.set_title("squares",fontsize = 24)
ax.set_xlabel('value',fontsize=14)
ax.set_ylabel('the square of value',fontsize=14)ax.tick_params(axis='both',labelsize=14)plt.show()

使用plt.style.use(‘seaborn-v0_8’)绘制的图像:

在这里插入图片描述

换了另一个样式:

在这里插入图片描述

1.4 使用scatter()绘制散点图并设置样式

绘制一个点:

import matplotlib.pyplot as pltplt.style.use('seaborn-v0_8')
fig,ax = plt.subplots()
ax.scatter(2,4)plt.show()

在这里插入图片描述
绘制样式:

import matplotlib.pyplot as pltplt.style.use('seaborn-v0_8')
fig,ax = plt.subplots()
ax.scatter(2,4)ax.set_title('squares',fontsize = 24)
ax.set_xlabel('value',fontsize = 14)
ax.set_ylabel('squares of value',fontsize = 14)ax.tick_params(axis='both',which='major',labelsize=14)
plt.show()

在这里插入图片描述

1.5 使用scatter()绘制一系列点

列表x_values 包含要计算平方值的数,列表y_values 包含前述数的平方值。

将这些列表传递给scatter() 时,Matplotlib依次从每个列表中读取一个值来绘制一个点。

要绘制的点的坐标分别为 (1, 1)、(2, 4)、(3, 9)、(4, 16)和(5, 25)

import matplotlib.pyplot as pltx_values = [1,2,3,4,5]
y_values = [1,4,9,16,25]plt.style.use('seaborn-v0_8')
fig,ax = plt.subplots()
ax.scatter(x_values,y_values,s=100)
ax.set_title('squares',fontsize = 24)
ax.set_xlabel('value',fontsize = 14)
ax.set_ylabel('squares of value',fontsize = 14)ax.tick_params(axis='both',which='major',labelsize=14)
plt.show()

在这里插入图片描述

1.6 python循环自动计算数据

为1000个点绘制代码,首先创建两个包含x和y值的列表,然后传给scatter方法。

方法axis()指定了每个坐标轴的取值范围,该方法要求提供四个值:x轴y轴的最小值和最大值。

import matplotlib.pyplot as pltx_values = range(1,1001)
y_values = [x**2 for x in x_values]
plt.style.use('seaborn-v0_8')
fig,ax = plt.subplots()ax.scatter(x_values,y_values,s=10)
ax.set_title('squares',fontsize = 24)
ax.set_xlabel('value',fontsize = 14)
ax.set_ylabel('squares of value',fontsize = 14)
ax.axis([0,1100,0,1100000])
plt.show()

在这里插入图片描述

1.7 自定义颜色

设置散点图数据点的颜色:

  1. 传递参数c,设置c的内容。
ax.scatter(x_value,y_value,c='red',s=10)
  1. 使用RGB自定义颜色,传递一个元组,其中包含三个0~1的小数值,分别表示红色、绿色和蓝色。
ax.scatter(x_values, y_values, c=(0, 0.8, 0), s=10)

在这里插入图片描述

1.8 使用颜色映射

**颜色映射 (colormap)**是一系列颜色,从起始颜色渐变到结束颜色。在可视化中,颜色映射用于突出数据的规律。可以用较浅的颜色来显示较小的值,并使用较深的颜色来显示较大的值。

模块pyplot 内置了一组颜色映射。要使用这些颜色映射,需要告诉pyplot 该如何设置数据集中每个点的颜色。下面演示了如何根据每个点的 值来设置其颜色。

ax.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,s=10)

在这里插入图片描述

1.9 自动保存图表

要让程序自动将图表保存到文件中,可将调用plt.show() 替换为调用plt.savefig()。

plt.savefig('squares_plot.png', bbox_inches='tight')
  • 第一个实参指定要以什么文件名保存图表,这个文件将存储到scatter_squares.py所在的目录。

  • 第二个实参指定将图表多余的空白区域裁剪掉。如果要保留图表周围多余的空白区域,只需省略这个实参即可。

练习题

在这里插入图片描述

import matplotlib.pyplot as pltplt.style.use('seaborn-v0_8')
x_values = range(1,6)
y_valus = [x**3 for x in x_values]
fig,ax = plt.subplots()
ax.scatter(x_values,y_valus)
ax.set_title('cubic number')
ax.set_xlabel('value')
ax.set_ylabel('value to the cube')
plt.show()

在这里插入图片描述

import matplotlib.pyplot as pltplt.style.use('seaborn-v0_8')
x_values = range(1,5001)
y_valus = [x**3 for x in x_values]
fig,ax = plt.subplots()
ax.axis([0,5500,0,125000000000])
ax.scatter(x_values,y_valus,c=y_valus,cmap=plt.cm.Blues,s=10)
ax.set_title('cubic number')
ax.set_xlabel('value')
ax.set_ylabel('value to the cube')
plt.show()

在这里插入图片描述

相关文章:

python之matplotlib入门初体验:使用Matplotlib进行简单的图形绘制

目录 绘制简单的折线图1.1 修改标签文字和线条粗细1.2 校正图形1.3 使用内置样式1.4 使用scatter()绘制散点图并设置样式1.5 使用scatter()绘制一系列点1.6 python循环自动计算数据1.7 自定义颜色1.8 使用颜色映射1.9 自动保存图表练习题 绘制简单的折线图 绘制一个简单折线图…...

[Linux kernel] [ARM64] boot 流程梳理

一、启动汇编代码部分 0. 链接文件找代码段入口 – _text arch/arm64/kernel/vmlinux.lds.S ENTRY(_text). KIMAGE_VADDR;.head.text : {_text .;HEAD_TEXT}.text : ALIGN(SEGMENT_ALIGN) { /* Real text segment */_stext .; /* Text and read-only data */IRQENTRY_TE…...

重建二叉树

输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。 注意: 二叉树中每个节点的值都互不相同;输入的前序遍历和中序遍历一定合法; 数据范围 树中节点数量范围 [0,100] 。 样例 给定: 前序遍历是:[3, 9, 2…...

支付整体架构

5.4 支付的技术架构 架构即未来,只有建立在技术架构设计良好的体系上,支付机构才能有美好的未来。如果支付的技术体系在架构上存在问题,那么就没有办法实现高可用性、高安全性、高效率和水平可扩展性。 总结多年来在海内外支付机构主持和参与…...

百度智能云:千帆大模型平台接入Llama 2等33个大模型,上线103个Prompt模板

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…...

烦人的幻灯片——拓扑排序

烦人的幻灯片 烦人的幻灯片问题描述输入输出格式输入格式输出格式 输入输出样例输入样例:输入样例一:输入样例二: 输出样例:输出样例一:输出样例二: 正确做法拓扑排序 代码 烦人的幻灯片 问题描述 李教授…...

无涯教程-Perl - ord函数

描述 此函数返回EXPR指定的字符的ASCII数值,如果省略则返回$_。例如,ord(A)返回值为65。 语法 以下是此函数的简单语法- ord EXPRord返回值 该函数返回整数。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -wprint("ord() ", ord(G), "\n"…...

Python爬虫:js逆向调式操作及调式中遇到debugger问题

Python爬虫:js逆向调式操作及调式中遇到debugger问题 1. 前言2. js逆向调式操作2.1 DOM事件断点2.2 XHR/提取断点(用于请求接口参数加密处理)2.3 请求返回的数据是加密的2.4 hook定位参数 3. 调式中遇到debugger问题3.1 解决方式(一律不在此处暂停)3.2 问题:点击一律…...

HTML网页制作技巧:打造出色的用户体验

HTML是构建网页的基础语言,掌握一些关键的技巧可以帮助您创建出色的用户体验。本文将介绍一些HTML网页制作的技巧,从布局和样式到交互和可访问性,为您提供有用的指导。无论您是初学者还是有经验的开发者,这些技巧都将对您的网页设…...

探究使用HTTP代理ip后无法访问网站的原因与解决方案

目录 访问网站的原理是什么 1. DNS解析 2. 建立TCP连接 3. 发送HTTP请求: 4. 服务器响应: 5. 浏览器渲染: 6. 页面展示: 使用代理IP后访问不了网站,有哪些方面的原因 1. 代理IP的可用性: 2. 代理…...

SpringBoot 全局异常处理进阶

待总结 参考文章: SpringBoot 全局异常处理进阶:使用 ControllerAdvice 对不同的 Controller 分别捕获异常并处理 SpringBoot 对 controller 层捕获全局异常并处理的方法(ControllerAdvice 和 ExceptionHandler) 注解RestCont…...

数据结构(一):顺序表详解

在正式介绍顺序表之前,我们有必要先了解一个名词:线性表。 线性表: 线性表是,具有n个相同特性的数据元素的有限序列。常见的线性表:顺序表、链表、栈、队列、数组、字符串... 线性表在逻辑上是线性结构,但…...

【周末闲谈】人工智能热潮下的AIGC到底指的是什么?

生成式人工智能AIGC(Artificial Intelligence Generated Content)是人工智能1.0时代进入2.0时代的重要标志。 个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一…...

sklearn垃圾邮件分类

在Python中,可以使用机器学习算法来进行垃圾邮件分类。下面是一个简单的示例,使用朴素贝叶斯算法进行垃圾邮件分类: import pandas as pd from sklearn.feature_extraction.text import CountVectorizer from sklearn.model_selection impor…...

UI美工设计岗位的工作职责

UI美工设计岗位的工作职责1 职责: 1、负责软件界面的美术设计、创意工作和制作工作; 2、根据各种相关软件的用户群,提出构思新颖、有高度吸引力的创意设计; 3、对页面进行优化,使用户操作更趋于人性化; 4、维护现有的应用产品; 5、收集和…...

ES6链判断运算符(?.)的正确打开方式

在实际应用中,如果读取对象内部 的某个属性,往往需要判断一下,属性的上层对象是否存在。比如,读取message.body.user.firstName这个属性,安全的写法是写成下下面这样: // 错误的写法 const firstName mes…...

删除块参照 删除块定义

删除块参照 void CDwgDatabaseUtil::DeleteBlockReference(CString strBlockName) {// 锁定文档acDocManager->lockDocument(acDocManager->curDocument());AcDbObjectId objRecId;if (...

机器学习笔记:李宏毅ChatGPT:生成式学习的两种策略

1 策略1 “各个击破”——autoregressive model “各个击破”——一个一个生成出来 2 策略2 : “一次到位”——non-autoregressve model 一步到位,全部生成出来 2.1 non-autoregressive model 如何确定长度? 两种策略 策略1:始…...

React 组件防止冒泡方法

背景 在使用 antd 组件库开发时,发现点击一个子组件,却触发了父组件的点击事件,比如,我在一个折叠面板里面放入一个下拉框或者对下拉框列表渲染做定制,每个下拉框候选项都有一个子组件… 解决 其实这就是 Javascri…...

MAUI+Blazor 如何开启浏览器调试工具

文章目录 前言如何开启调试模式输入快捷键打开浏览器有什么意义? 前言 MAUIBlazor其实就是浏览器套壳,我觉得很有意义,因为现在性能已经不是主要的限制了,很多时候讲究的快速开发。而且MAUIBlazor跨平台的未来感觉实在是太香了。…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...