利用Matplotlib画简单的线形图

实验题目:简单的线形图

实验目的:利用Matplotlib画简单的线形图

实验环境:海豚大数据和人工智能实验室,使用的Python库

名称

版本

简介

numpy

1.16.0

线性代数

Pandas

0.25.0

数据分析

Matplotlib

3.1.0

数据可视化

3实验适用的对象

  • 已经学习了Python基础,具备机器学习基础
  • 学习对象:本科学生、研究生、人工智能、算法相关研究者、开发者
  • 大数据分析与人工智能

步骤1. 安装并引入必要的库

  1. 代码:

!pip install numpy==1.16.0

!pip install pandas==0.25.0!

pip install matplotlib==3.1.0

  1. 结果:

Looking in indexes: https://pypi.zjhu.dolphin-labs.com/simple/, Simple Index

Requirement already satisfied: numpy==1.16.0 in /opt/conda/lib/python3.6/site-packages (1.16.0)

WARNING: You are using pip version 20.1; however, version 21.3.1 is available.

You should consider upgrading via the '/resources/common/.virtualenv/python3.6/bin/python -m pip install --upgrade pip' command.

Looking in indexes: https://pypi.zjhu.dolphin-labs.com/simple/, Simple Index

Requirement already satisfied: pandas==0.25.0 in /opt/conda/lib/python3.6/site-packages (0.25.0)

Requirement already satisfied: pytz>=2017.2 in /opt/conda/lib/python3.6/site-packages (from pandas==0.25.0) (2021.3)

Requirement already satisfied: python-dateutil>=2.6.1 in /opt/conda/lib/python3.6/site-packages (from pandas==0.25.0) (2.8.1)

Requirement already satisfied: numpy>=1.13.3 in /opt/conda/lib/python3.6/site-packages (from pandas==0.25.0) (1.16.0)

Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.6/site-packages (from python-dateutil>=2.6.1->pandas==0.25.0) (1.14.0)

WARNING: You are using pip version 20.1; however, version 21.3.1 is available.

You should consider upgrading via the '/resources/common/.virtualenv/python3.6/bin/python -m pip install --upgrade pip' command.

Looking in indexes: https://pypi.zjhu.dolphin-labs.com/simple/, Simple Index

Requirement already satisfied: matplotlib==3.1.0 in /opt/conda/lib/python3.6/site-packages (3.1.0)

Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/lib/python3.6/site-packages (from matplotlib==3.1.0) (2.8.1)

Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.6/site-packages (from matplotlib==3.1.0) (0.11.0)

Requirement already satisfied: numpy>=1.11 in /opt/conda/lib/python3.6/site-packages (from matplotlib==3.1.0) (1.16.0)

Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/lib/python3.6/site-packages (from matplotlib==3.1.0) (1.3.1)

Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/lib/python3.6/site-packages (from matplotlib==3.1.0) (2.4.7)

Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.6/site-packages (from python-dateutil>=2.1->matplotlib==3.1.0) (1.14.0)

WARNING: You are using pip version 20.1; however, version 21.3.1 is available.

You should consider upgrading via the '/resources/common/.virtualenv/python3.6/bin/python -m pip install --upgrade pip' command.

  1. 代码:

%matplotlib inline

import matplotlib.pyplot as plt

plt.style.use('seaborn-whitegrid')

import numpy as np

可能最简单的图是一个函数y=f(x)的可视化。

在这里,我们将首先考虑创建这种类型的简单图。

对于所有的Matplotlib图,我们首先创建一个图形和一个坐标轴:

  1. 代码:

fig = plt.figure()

ax = plt.axes()

x = np.linspace(0, 10, 1000)

ax.plot(x, np.sin(x));

  1. 结果:
1.1 Figure对象

Matplotlib中,图(类plt.Figure的一个实例)可以被认为是一个包含所有表示轴、图形、文本和标签的对象的容器。

figure 对象是最外层的绘图单位,默认是以 1开始编号(MATLAB风格,Figure 1, Figure 2, ...),可以用 plt.figure() 产生一幅图像,除了默认参数外,可以指定的参数有:

  • num - 编号
  • figsize - 图像大小
  • dpi - 分辨率
  • facecolor - 背景色
  • edgecolor - 边界颜色
  • frameon - 边框

这些属性也可以通过 Figure 对象的 set_xxx 方法来改变。

1.2 Axes 轴域

我们在上面看到的ax是轴域(类plt.Axes的一个实例):一个带有刻度和标签的边界框, 可理解成一些轴(Axis,具体的坐标系)的集合,这个集合还有很多轴(Axis)属性、标注等,它最终将包含构成我们的可视化的plot元素。

一旦我们创建了一个坐标轴,我们就可以使用ax.plot函数来绘制一些数据。

  1. 代码:

fig = plt.figure()  

ax1 = fig.add_axes([0.1, 0.3, 0.7, 0.7])     

ax2 = fig.add_axes([0.3, 0.5, 0.3, 0.3])    

plt.plot(np.arange(3))

plt.show()

  1. 结果:

或者,我们可以使用pylab接口,并在后台为我们创建图和轴。

  1. 代码:

plt.plot(x, np.sin(x));

  1. 结果:

如果我们想要创建一个多行的图形,我们可以简单地调用plot 函数多次:

  1. 代码:

plt.plot(x, np.sin(x))

plt.plot(x, np.cos(x));

  1. 结果:

这就是在Matplotlib中绘制简单函数的全部内容!

现在我们将深入了解如何控制轴和线的外观。

步骤2 调整图形:线条的颜色和风格

你首先想要调整的可能是控制一个图形的线条颜色和风格。 plt.plot()函数接受额外的参数,可以用来指定这些参数。

为了调整颜色,你可以使用color这个词,它接受一个代表几乎任何可以想象到的颜色的字符串参数。

颜色可以通过多种方式来指定:

  1. 代码:

plt.plot(x, np.sin(x - 0), color='blue')       

plt.plot(x, np.sin(x - 1), color='g')          

plt.plot(x, np.sin(x - 2), color='0.75')       

plt.plot(x, np.sin(x - 3), color='#FFDD44')    

plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3))

plt.plot(x, np.sin(x - 5), color='chartreuse');

  1. 结果:

如果没有指定颜色,Matplotlib将自动循环通过一组默认颜色来进行多行。

同样的,线条风格也可以通过使用linestyle 关键字来调整:

  1. 代码:

plt.plot(x, x + 0, linestyle='solid')

plt.plot(x, x + 1, linestyle='dashed')

plt.plot(x, x + 2, linestyle='dashdot')

plt.plot(x, x + 3, linestyle='dotted');

plt.plot(x, x + 4, linestyle='-') 

plt.plot(x, x + 5, linestyle='--')

plt.plot(x, x + 6, linestyle='-.')

plt.plot(x, x + 7, linestyle=':'); 

  1. 结果:

如果你想要非常简洁,这些 linestylecolor的代码可以组合成一个非关键字的plt.plot()功能:

  1. 代码:

plt.plot(x, x + 0, '-g') 

plt.plot(x, x + 1, '--c')

plt.plot(x, x + 2, '-.k')

 plt.plot(x, x + 3, ':r'); 

  1. 结果:

表示颜色的字符参数有:

字符

颜色

‘b’

蓝色blue

‘g’

绿色green

‘r’

红色red

‘c’

青色cyan

‘m’

品红magenta

‘y’

黄色yellow

‘k’

黑色black

‘w’

白色white

‘#008000’

RGB某颜色

‘0.8’

灰度值字符串

表示(风格)类型的字符参数有:

字符

类型

字符

类型

'-'

实线

'--'

虚线

'-.'

虚点线

':'

点线

'.'

','

像素点

'o'

圆点

'v'

下三角点

'^'

上三角点

'<'

左三角点

'>'

右三角点

'1'

下三叉点

'2'

上三叉点

'3'

左三叉点

'4'

右三叉点

's'

正方点

'p'

五角点

'*'

星形点

'h'

六边形点1

'H'

六边形点2

'+'

加号点

'x'

乘号点

'D'

实心菱形点

'd'

瘦菱形点

'_'

横线点

步骤3. 设定坐标轴的范围

Matplotlib在为图形选择默认的坐标轴上做的很好,但是有时候我们有更改坐标轴的需要

  1. 代码:

x = np.linspace(-5* np.pi,5 * np.pi)

y, z = np.sin(x), np.cos(x)

plt.plot(x, y, linewidth=2.0, color='r')

plt.plot(x, z, linewidth=3.0, color='b', linestyle='--')

plt.show()

  1. 结果:

最基本的调整轴限的方法是使用plt.xlim()  plt.ylim() 的方法:

  1. 代码:

x = np.linspace(-5* np.pi,5 * np.pi, 200)

y, z = np.sin(x), np.cos(x)

plt.plot(x, y, linewidth=2.0, color='r')

plt.plot(x, z, linewidth=3.0, color='b', linestyle='--')

plt.xlim(-5, 5)

plt.show()

  1. 结果:

如果出于某种原因,您想要反向显示任意一个轴,您可以简单地颠倒参数的顺序:

  1. 代码:

plt.plot(x, np.sin(x))

plt.xlim(10, 0)

plt.ylim(1.2, -1.2);

  1. 结果:

一个有用的相关方法是 plt.axis(),允许您通过一个指定[xmin, xmax, ymin, ymax]的列表来设置xy的极限:

  1. 代码:

plt.plot(x, np.sin(x))

plt.axis([-1, 11, -1.5, 1.5]);

  1. 结果:

plt.axis()方法甚至超出了这个范围,允许你做一些事情,比如自动收紧当前图形的边界:

  1. 代码:

plt.plot(x, np.sin(x))

plt.axis('tight');

  1. 结果:

它甚至允许更高级别的规范,比如保证一个相等的宽比,这样在屏幕上,x中的一个单位就等于y中的一个单位:

  1. 代码;

plt.plot(x, np.sin(x))

plt.axis('equal');

  1. 结果:
  • 练习 1:绘制x的tan函数图像,将x轴设为(0,10),y轴设为(-1.5,1.5)
  1. 代码:

plt.plot(x, np.tan(x))

plt.axis([0,10,-1.5,1.5]);
  1. 结果:

步骤4 图形的标签

作为本实验的最后一部分,我们将简要地看一下图形的标签:标题、轴标签和简单的说明。

标题和轴标签是最简单的标签,有一些方法可以用来快速设置它们:

  1. 代码:
import numpy as np
t =np.arange(0., 5., 0.2)    
plt.plot(t, t, 'r--', label='y=t')
plt.plot(t, t ** 2, 'bs'label='y=t^2')
plt.plot(t, t ** 3, 'g^'label='y=t^3')
plt.xlabel("X values")
plt.ylabel("Y values")
plt.legend()
plt.show()
  1. 结果:

这些标签的位置、大小和样式可以使用可选参数来调整。

当在单个轴中显示多个行时,创建一个标记每行类型的图形说明是很有用的。

同样,Matplotlib有一种快速创建这样一个说明的内置方法。

这是通过plt.legend() 的方法来完成的。

虽然有几种有效的使用方法,但我发现最容易的方法是使用labelplot函数关键字来指定每行的标签:

  1. 代码:

plt.plot(x, np.sin(x), '-g', label='sin(x)')

plt.plot(x, np.cos(x), ':b', label='cos(x)')

plt.axis('equal')

plt.legend();

  1. 结果:

正如您所看到的,plt.legend()函数可以跟踪线条样式和颜色,并与正确的标签匹配。

  • 练习 2:对练习1创建的图形添加标签:x轴、y轴、以及图形说明
  1. 代码:
import numpy as np
t = np.arange(0., 5., 0.2)    
plt.plot(x, np.tan(x), '-p', label='tan(x)')
plt.axis([0,10,-1.5,1.5])
plt.xlabel("X values")
plt.ylabel("Y values")
plt.legend()
plt.show()
  1. 结果:

步骤5 Matplotlib陷阱

虽然大多数 plt函数可以直接转化为 ax的方法(plt.plot() → ax.plot()plt.legend() → ax.legend()),但不是对于所有的命令都是这样的。

特别地,设置坐标轴极限、标签和标题的函数被稍微修改了。

要在matlabstyle函数和面向对象的方法之间进行转换,请进行以下更改:

  1. plt.xlabel() → ax.set_xlabel()
  2. plt.ylabel() → ax.set_ylabel()
  3. plt.xlim() → ax.set_xlim()
  4. plt.ylim() → ax.set_ylim()
  5. plt.title() → ax.set_title()

在面向对象的界面中绘图,而不是单独调用这些函数,使用ax.set()方法来设置所有这些属性通常更方便:

  1. 代码:
ax=plt.axes()
ax.plot(x, np.sin(x))
ax.set(xlim=(0, 10), ylim=(-2, 2),xlabel='x', ylabel='sin(x)',title='A Simple Plot');
  • 练习 3:使用上文中介绍到的办法,对练习2的代码进行相应的修改
ax = plt.axes()
ax.plot(x, np.tan(x))
ax.set(xlim=(0, 10), ylim=(-1.5, 1.5), xlabel='x', ylabel='tan(x)',title='A Simple Plot');

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CMake项目管理

背景 目前看到很过很多框架&#xff0c;很好奇大家如何从头搭建一个C的库&#xff0c;这里简单介绍一个基本模板. 参考&#xff1a;https://zhuanlan.zhihu.com/p/631257434 目录组织 假如项目名称叫project&#xff0c; 一般可以按照下面的方式组织代码&#xff0c;这里可以…

深入浅出堆排序: 高效算法背后的原理与性能

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》 《高效算法》 ⛺️生活的理想&#xff0c;就是为了理想的生活! &#x1f4cb; 前言 &#x1f308;堆排序一个基于二叉堆数据结构的排序算法&#xff0c;其稳定性和排序效率在八大排序中也…

浏览器开发者工具(Developer Tools)详解

作为一名前端开发人员&#xff0c;熟练应用浏览器开发工具很重要。笔者在这方面的知识未成体系&#xff0c;最近在跟着chorme官方文档学习&#xff0c;于是整理了本文&#xff0c;如有不足&#xff0c;欢迎指正。 目录 1.elements(元素) 2.console(控制台) 3.sources(源代码…

逻辑斯蒂回归-建模概率计算(鸢尾花)

导入的数据说明 因为气候不同&#xff0c;造就性不同&#xff0c;统计鸢尾花的关键特征数据&#xff1a;花萼长度、花萼宽度、花瓣长度&#xff0c;花瓣宽度 植物学家划分&#xff1a; setosa(中文名&#xff1a;山鸢尾) versicolor(中文名&#xff1a;杂色鸢尾) virginica(中…

React学习计划-React16--React基础(三)收集表单数据、高阶函数柯里化、类的复习

1. 收集表单数据 包含表单的组件分类 受控组件——页面中所有输入类的DOM,随着输入&#xff0c;把值存维护在状态里&#xff0c;需要用的时候去状态里取值&#xff08;推荐&#xff0c;避免了过渡使用ref&#xff09;非受控组件——页面中所有输入类的DOM&#xff0c;现用现取…

高级算法设计与分析(五) -- 回溯法

系列文章目录 高级算法设计与分析&#xff08;一&#xff09; -- 算法引论 高级算法设计与分析&#xff08;二&#xff09; -- 递归与分治策略 高级算法设计与分析&#xff08;三&#xff09; -- 动态规划 高级算法设计与分析&#xff08;四&#xff09; -- 贪心算法 高级…

LED电子屏幕正迎来人屏互动技术

随着科技的不断进步&#xff0c;LED电子屏幕正迎来人屏互动技术的未来。传统LED电子屏幕一直以来只是作为显示器&#xff0c;实现单向传播&#xff0c;缺乏人群互动和观众参与的乐趣。然而&#xff0c;随着LED显示屏厂家技术的不断创新&#xff0c;LED电子屏幕正在摆脱单向传播…

C++基础语法总结

C使用 C的源文件扩展名是&#xff1a;cppC程序的入口是main函数C完全兼容c语言的语法 1、cin、cout C中常使用cin、cout进行控制台的输入和输出 #include <iostream> using namespace std;int main() {cout << "hello world !!!" << endl;retu…

如何设计更优雅的 React 组件?

在日常开发中&#xff0c;团队中每个人组织代码的方式不尽相同。下面我们就从代码结构的角度来看看如何组织一个更加优雅的 React 组件&#xff01; 1. 导入依赖项 我们通常会在组件文件顶部导入组件所需的依赖项。对于不同类别的依赖项&#xff0c;建议对它们进行分组&#…

Django(二)

1.django框架 1.1 安装 pip install django3.21.2 命令行 创建项目 cd 指定目录 django-admin startproject 项目名mysite ├── manage.py [项目的管理工具] └── mysite├── __init__.py├── settings.py 【配置文件&#xff0c;只有一部分…

在Portainer创建Nginx容器并部署Web静态站点实现公网访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

大数据---34.HBase数据结构

一、HBase简介 HBase是一个开源的、分布式的、版本化的NoSQL数据库&#xff08;即非关系型数据库&#xff09;&#xff0c;依托Hadoop分布式文件系统HDFS提供分布式数据存储&#xff0c;利用MapReduce来处理海量数据&#xff0c;用Zookeeper作为其分布式协同服务&#xff0c;一…

虚拟机安装CentOS7并配置共享文件夹

一、虚拟机安装CentOS7并配置共享文件夹 二、CentOS 7 上hadoop伪分布式搭建全流程完整教程 三、本机使用python操作hdfs搭建及常见问题 四、mapreduce搭建 五、mapper-reducer编程搭建 六、hive数据仓库安装 一、虚拟机安装二、centos系统安装三、共享文件夹配置 一、虚拟机安…

C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# 方法

C# 入门基础知识 - 方法 第8节 方法8.1 C# 函数/方法简介8.2 方法的声明及调用8.2.1 参数列表方法的声明及调用8.2.2 参数数组方法的声明及调用8.2.3、引用参数与值参数 8.3 静态方法和实例方法8.3.1 静态、实例方法的区别8.2.3 静态、实例方法的声明及其调用 8.4 虚方法8.4.1 …

“智”绘出海新航道,亚马逊云科技携手涂鸦智能助力智能家居企业全球化

随着人工智能、5G等技术的快速发展&#xff0c;智能家居行业呈现高速发展的态势。Statista数据显示&#xff0c;2022年全球智能家居行业支出总值为1145亿美元&#xff0c;欧美地区以较早的智能家居普及率&#xff0c;率先进入全屋智能时代&#xff0c;其中欧盟区国家家用智能设…

大规模采用奇点临近?Web3应用爆发离不开这个“支撑”赛道

作者&#xff5c;Jason Jiang 数据是当今世界最具价值的资源&#xff0c;也是数字掘金的必争之地。尽管Web3迄今仍有诸多争议&#xff0c;但随着铭文、Gamefi、DeFi等链上生态的多样化发展&#xff0c;我们正身处Web3应用爆发的洪流之中&#xff0c;区块链数据赛道也因此备受关…

LLM微调(四)| 微调Llama 2实现Text-to-SQL,并使用LlamaIndex在数据库上进行推理

Llama 2是开源LLM发展的一个巨大里程碑。最大模型及其经过微调的变体位居Hugging Face Open LLM排行榜&#xff08;https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard&#xff09;前列。多个基准测试表明&#xff0c;就性能而言&#xff0c;它正在接近GPT-3.5…

vue 简单实现购物车:商品基础信息最终的 html 文件 + 商品计数器的组件处理,实现了购物车;

购物车实现过程&#xff1a; Ⅰ、商品购物车作业需求&#xff1a;1、商品购物车页面示例&#xff1a;2、具体需求&#xff1a; Ⅱ、html 文件的构建&#xff1a;商品购物车.html Ⅲ、组件文件的构建&#xff1a;商品购物车1.js Ⅳ、小结&#xff1a; Ⅰ、商品购物车作业需求&am…

TypeScript实战——ChatGPT前端自适应手机端,PC端

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 可以在线体验哦&#xff1a;体验地址 文章目录 前言引言先看效果PC端手机端 实现原理解释 包的架构目录 引言 ChatGPT是由OpenAI开发的一种基于语言模型的对话系统。它是GPT&#xff08;…

Java智慧工地源码 SAAS智慧工地源码 智慧工地管理可视化平台源码 带移动APP

一、系统主要功能介绍 系统功能介绍&#xff1a; 【项目人员管理】 1. 项目管理&#xff1a;项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。 2. 人员信息管理&#xff1a;支持身份证及人脸信息采集&#…