【matplotlib】19.基本用法

news2024/9/20 22:45:01

#【matplotlib】19.基本用法

2021.1.19 画figure图基本方法。参考:
https://m.runoob.com/matplotlib/matplotlib-pyplot.html
https://mofanpy.com/tutorials/data-manipulation/plt/figure

matplotlib 是python的画图包

19.1 基础使用

plot图,就是以点组成的图

  1. 知道x和方程
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,50)
y1 = 2*x + 1
#定义个窗口
plt.figure()
plt.plot(x,y)
plt.show()

在这里插入图片描述

  1. 知道两个点

(-3,-5),(3,7)两点的x存到xpoint

plt.figure()
xpoint = np.array([-3,3])
ypoint = np.array([-5, 7])
plt.plot(xpoint,ypoint)
plt.show()

在这里插入图片描述

# 例2
xpoints = np.array([1, 2, 6, 8])
ypoints = np.array([3, 8, 1, 10])

plt.plot(xpoints, ypoints)
plt.show()

在这里插入图片描述

  1. 画多条图像,并且设着一些参数
  • num= :就是图像的编号
  • figsize 窗口尺寸
  • linewidth 线宽
  • linestyle:‘‐’ 实线,‘‐‐’ 破折线,‘‐.’ 点划线,‘:’ 虚线。
  • color:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,‘#008000’ RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。
# 方法1 单独设着
y2 = x**2 + 1

#num=3 尺寸
plt.figure(num= 3,figsize=(8,5))

plt.plot(x,y1)
plt.plot(x, y2, color = "red", linestyle = "--", linewidth = 1.0)
plt.show()

在这里插入图片描述

# 方法2

plt.figure()

plt.plot(x,y1,x,y2)
plt.show()


在这里插入图片描述

  • 描绘坐标点
xpoints = np.array([1, 8])
ypoints = np.array([3, 10])

plt.plot(xpoints, ypoints, 'o')
plt.show()

在这里插入图片描述

19.2 设置坐标轴

  1. xlim(),ylim(),xlabel(),ylabel()
  • xlim(),ylim(): x,y范围
  • xlabel(),ylabel():x,ylabal
plt.figure(num= 4,figsize=(8,5))

plt.xlim((-1,2))
plt.ylim((-2,3))

plt.xlabel("I am X")
plt.ylabel("I am Y")


plt.plot(x,y1)
plt.plot(x, y2, color = "red", linestyle = "--", linewidth = 1.0)

plt.show()

在这里插入图片描述

  1. 设置刻度 plt.xticks
  • plt.xticks
  • plt.xticks
plt.figure(num= 4,figsize=(8,5))
![在这里插入图片描述](https://img-blog.csdnimg.cn/9ad560bb8adf4ed9913dc083693042a7.png#pic_center)

plt.xlim((-1,2))
plt.ylim((-2,3))

plt.xlabel("I am X")
plt.ylabel("I am Y")

plt.plot(x,y1)
plt.plot(x, y2, color = "red", linestyle = "--", linewidth = 1.0)

new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],['$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])
plt.show()
  1. 设置值边框用.spines[]
  • ① 获取坐标轴信息plt.gca()
  • ② .spines[‘XXX’]设置边框,有“right”“left”“bottom”“top”
#数据准备
x = np.linspace(-3, 3, 50)
y1 = 2*x + 1
y2 = x**2

# 获得坐标信息
plt.figure()
plt.plot(x, y2)
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
plt.xlim((-1, 2))
plt.ylim((-2, 3))

#轴信息准备
new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],['$really\ bad$', '$bad$', '$normal$', '$good$', '$really\ good$'])


#隐藏右侧和上次坐标轴
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.show()

在这里插入图片描述

  1. 调整坐标轴
  • .xaxis.set_ticks_position设置x坐标刻度数字或名称的位置:bottom.(所有位置:top,bottom,both,default,none)
  • .set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)
#数据准备
x = np.linspace(-3, 3, 50)
y1 = 2*x + 1
y2 = x**2

# 获得坐标信息
plt.figure(num= 5,figsize=(8,5))
plt.plot(x, y2)
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
plt.xlim((-1, 2))
plt.ylim((-2, 3))

#轴信息准备
new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],['$really\ bad$', '$bad$', '$normal$', '$good$', '$really\ good$'])


#隐藏右侧和上次坐标轴
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')


# x坐标轴调整
ax.xaxis.set_ticks_position('top')
ax.spines['bottom'].set_position(('data', 0))


#y坐标轴调整
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
plt.show()

在这里插入图片描述

  • ax.xaxis.set_ticks_position('top'):x坐标轴刻度在哪里显示,我这里放到上面了

  • ax.spines['bottom'].set_position(('data', 0)):就是下坐标轴,放到了数据的0位置;axes应该是按比例,0.1就是10%的位置

19.3 Legend 图例

图例就是这个图 什么颜色的什么线段代表什么的注释

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3, 3, 50)
y1 = 2*x + 1
y2 = x**2

plt.figure()
#set x limits
plt.xlim((-1, 2))
plt.ylim((-2, 3))

# set new sticks
new_sticks = np.linspace(-1, 2, 5)
plt.xticks(new_sticks)
# set tick labels
plt.yticks([-2, -1.8, -1, 1.22, 3],
           [r'$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])


# set line syles
l1, = plt.plot(x, y1, label='linear line')
l2, = plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--', label='square line')


plt.legend(handles=[l1, l2], labels=['up', 'down'],  loc='best')
<matplotlib.legend.Legend at 0x20f0711b1c0>

在这里插入图片描述

  • 我们以前有label,用了legend 可以将以前的覆盖到给与新的意义
  • 如果想用legend,那么在返回值明明的时候 要加, 如l1,l2,,并在handles中引用
  • loc='best':表示显示的位置是最佳位置,也就是随着窗口变化,这个图示会自己调整位置,出现在数据最少的地方。其他还有

‘best’ : 0,
‘upper right’ : 1,
‘upper left’ : 2,
‘lower left’ : 3,
‘lower right’ : 4,
‘right’ : 5,
‘center left’ : 6,
‘center right’ : 7,
‘lower center’ : 8,
‘upper center’ : 9,
‘center’ : 10,

19.4 标注

19.4.1 Annotation

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3, 3, 50)
y = 2*x + 1

plt.figure(num=1, figsize=(8, 5),)
plt.plot(x, y,)

ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))


# 画辅助线
x0 = 1
y0 = 2*x0 + 1
plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5)
# set dot styles
plt.scatter([x0, ], [y0, ], s=50, color='b')


# 添加注释
plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30),
             textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
Text(30, -30, '$2x+1=3$')

在这里插入图片描述

plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5)

  • 我们确定了两点(x0,y0)和(0,y0).
  • 两点间画了个虚线,k是黑色black

添加注释 annotate

  • r'$2x+1=%s$' % y0:就是显示的信息2x+1=y0

  • xy=就是此时的具体的值(x0,y0)

  • xycoords='data' 是说基于数据的值来选位置,

  • xytext=(+30, -30) 和 对于标注位置的描述 一正一负就是线的右下角,30就是大概距离

  • textcoords='offset points' : xy 偏差值,

  • arrowprops是对图中箭头类型的一些设置.

19.4.2 tick

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3, 3, 50)
y = 0.1*x

plt.figure()
# 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
plt.plot(x, y, linewidth=10, zorder=1)
plt.ylim(-2, 2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))

在这里插入图片描述

数据会遮住坐标轴或刻度

plt.figure()
# 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
plt.plot(x, y, linewidth=10, zorder=1)
plt.ylim(-2, 2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))


for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(12)
    # 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.7, zorder=0.001))
plt.show()

在这里插入图片描述

  • label in ax.get_xticklabels() + ax.get_yticklabels():所有坐标艾格处理
  • label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.7, zorder=2)):坐标轴背景白色 不要边框 透明度;
  • zorder指定绘图的各个组件相互叠加的顺序:https://cloud.tencent.com/developer/ask/sof/467726

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

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

相关文章

JavaEE2-Spring核心与设计思想

目录 1.Spring是什么&#xff1f; 2.容器是什么&#xff1f; 3.IoC是什么&#xff1f; 3.1.传统程序开发 3.2.控制反转式程序开发 3.3.对比总结规律 4.理解Spring IoC 4.1.将对象(Bean)存入到容器(Spring)&#xff1b; 4.2.从容器中取出对象。 5.DI概念说明 1.Spring…

LINUX---进程

目录相关概念1.什么是程序&#xff0c;什么是进程&#xff0c;有什么区别2.如何查看系统中有哪些进程3.进程标识符4.父进程&#xff0c;子进程5.C程序的存储空间是如何分配的创建进程函数forkvforkfork创建进程:vfork创建进程&#xff1a;进程退出正常退出&#xff1a;异常退出…

在XXX中找到了XXX的副本,但是当前代码与XXX中内置的版本不同【几种解决方案】

Microsoft VS警告类似如图所示&#xff1a; 然后发现编译编写好的代码无法打断点。定义的变量无法获取。 方案一&#xff1a; 把提示的该文件备份在其他文件夹一份&#xff0c;然后在项目中删除该文件。再把备份的文件放到该项目中。然后再编译。 方案二&#xff08;参考该博客…

Udev设备管理器

udev 引入 在2.4内核中 引入了 devfs&#xff0c;他支持设备节点的动态创建。devfs提供了在内存中的文件系统中创建设备节点的能力。设备驱动程序能够自主的管理自己的设备文件。而命名节点的任务还是落到了设备驱动程序头上。但是&#xff0c;设备命名策略是可管理的&#xf…

【设计模式】结构型模式·适配器模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易&#xff0c;如果您觉得写的不错&#xff0c;欢迎给博主来一波点赞、收藏~让博主更有动力吧&#xff01; 一. 概述 将一个类的接口转换成客户希望的另外一个接口&#xff0c;使得原本接口不兼容而不能一…

分布式搜索引擎--Elasticsearch

1.1 相关术语 和mysql类比 索引&#xff1a;数据库&#xff0c;database&#xff0c;6.0以后变化&#xff0c;对应表 类型&#xff1a;table&#xff0c;6.0以后变化&#xff0c;废弃 文档&#xff1a;一张表里的一行 字段&#xff1a;一个属性就是一个字段 和分布式相关 集群…

NLP学习笔记(六) Transformer简明介绍

大家好&#xff0c;我是半虹&#xff0c;这篇文章来讲 Transformer\text{Transformer}Transformer&#xff0c;想要获取更多相关文章&#xff0c;欢迎关注 自然语言处理 专栏 在之前的两篇文章中&#xff0c;我们介绍过序列到序列模型以及注意力机制在序列到序列模型中的应用 …

Linux开启Docker远程访问并设置安全访问(证书密钥),附一份小白一键设置脚本哦!

前言 喜欢折腾慢慢看&#xff0c;不喜欢折腾直接跳到小简下文的一键脚本那里&#xff0c;两分钟搞好。 我的博客&#xff1a;https://blog.ideaopen.cn 我的公众号&#xff1a;小简聊开发 开启远程访问 编辑docker.service文件 vi /usr/lib/systemd/system/docker.service # …

Python FastAPI 框架 操作Mysql数据库 增删改查

2 比 1 更容易理解&#xff0c;可以先看2&#xff08;单文件级别&#xff09; 1、FastAPI 框架 操作Mysql数据库(项目多文件级别) FastAPI 可以使用任何您想要的关系型数据库。 在这里&#xff0c;让我们看一个使用着SQLAlchemy的示例。 您可以很容易地将SQLAlchemy支持任何…

每天进步一点点,今天来学结构体

什么是结构体&#xff1f; C 语言允许用户自己指定这样一种数据结构&#xff0c;它由不同类型的数据组合成一个整体&#xff0c;以便引用&#xff0c;这些组合在一个整体中的数据是互相联系的&#xff0c;这样的数据结构称为结构体&#xff0c;它相当于其它高级语言中记录。 …

01、数据结构——数组

一、数据结构与算法 数据结构是一门研究组织数据方式的学科&#xff0c;有了编程语言也就有了数据结构。学好数据结构可以编写出更加漂亮、更加有效率的代码。程序数据结构算法数据结构是算法的基础 二、稀疏数组&#xff1a; 1、基本介绍&#xff1a; 当一个数组中大部分元…

【Javascript】文本转语音SpeechSynthesisUtterance

SpeechSynthesisUtterance基本介绍 SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等 SpeechSynthesisUtterance基本属性 SpeechSynthesisUtterance.lang 获取并设置话语的语言 SpeechSynthesis…

InfluxDB 笔记

概念 Measurement 类似于表名。 A measurement acts as a container for tags, fields, and timestamps. Tag 补充描述数据的信息&#xff0c;如示例中的location和scientist描述了该数据的采集地和采集人。这两个称为Tag Key&#xff0c;具体的值则称为Tag Value&#xff0c…

小程序基础篇-视图与逻辑

本次学习目标&#xff1a;实现页面间的导航跳转实现下拉刷新实现上拉加载更多知道小程序常用的生命周期函数1.页面导航页面导航指的是页面之前相互的跳转浏览器之间的页面导航有两种&#xff1a;<a>;location.href小程序之间的页面导航有两种&#xff1a;声明式导航&…

告警与恢复告警原理及实现

一、 背景自“双碳”政策提出以来&#xff0c;KaiwuDB 聚焦“数字能源”领域&#xff0c;为用户打造数字能源管理平台&#xff0c;旨在提升综合能源和碳资产管理能力。数字能源管理平台是以 KaiwuDB 为核心建设的云-边-端一体化数据服务平台&#xff0c;致力于为 IoT、工业互联…

前言技术--swagger

目录一、前后端分离的特点二、在没有swagger之前三、swagger的作用四、swagger的优点五、集成swagger5.1 新建springboot项目5.2 集成swagger5.3 开发一个controller用于测试5.4 启动服务&#xff0c;验证集成效果六、swagger常用注解七、swagger使用综合案例一、前后端分离的特…

Python的PyQt框架的使用-常用控件篇

Python的PyQt框架的使用-常用控件篇一、前言二 、QLineEdit 文本框三 、QPushButton按钮控件四、QRadioButton 单选按钮一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Python的PyQt框架的常用控件。如果文章对你有帮助、欢迎…

第一个程序——构建一个ServerUI

简介 本次程序设计均使用python实现&#xff0c;使用sql server对聊天室用户的数据进行存储。通过python socket套接字编程&#xff0c;实现了在线聊天室的功能&#xff0c;并使用python tkinter进行UI界面的设计。 思路 由计算机网络的基础知识易知&#xff0c;两个主机之间…

基于LSTMGRU的微博突发事件分析与谣言检测(附完整的代码+报告)

问题描述及方法基础 本章主要对课题研究所涉及的机器学习、自然语言处理的原理和方法进行介绍,主要分为四部分,第一部分是将本课谣言检测任务的符号化描述;第二部分是微博数据的预处理,包括语言模型、文本分词等技术;第三部分与第四部分分别是本文搭建的微博谣言检测模型所…

py字符串的格式化笔记

print():和cjava差不多&#xff0c;只是逗号变了&#xff0c;其中 %s 就是模板中的占位符&#xff0c;表示这个位置先占着&#xff0c;待会儿要有数据填入到这里。然后再提供一个元组&#xff0c;里面依次存放需要填入到 %s 位置 的数据。这里是使用变量 (salary,tax,aftertax)…