【CV】使用 matplotlib.pyplot 绘制统计图、坐标系原点在不同的位置和添加辅助点和辅助线

1. 数据

这里使用模拟数据

import random
import matplotlib.pyplot as pltvalues = [i * random.random() for i in range(100)]
values[0.0,0.2596417433881839,1.0607353016866907,
...89.24287458194097,78.48300255421442]

2.坐标原点-左下角

坐标系原点在左下角,正常坐标系

def plot_normal(values):"""1. 正常坐标系"""plt.figure(figsize=(6.4, 3.2), dpi=100)# 画图plt.plot(values)# 坐标轴范围plt.axis((0, 100, 0, 100))# 坐标轴区间: x 为 10 , y 为 20plt.xticks([i * 10 for i in range(11)])plt.yticks([i * 20 for i in range(6)])plt.tight_layout()plt.show()plot_normal(values)

在这里插入图片描述

3.坐标原点-左上角

坐标系原点在左上角-图像坐标

def plot_origin_left_top(values):"""2. 坐标原点在左上角"""plt.figure(figsize=(6.4, 3.2), dpi=100)ax = plt.subplot()ax.plot(values)# 坐标轴范围ax.axis((0, 100, 0, 100))# 坐标轴区间: x 为 10 , y 为 20ax.set_xticks([i * 10 for i in range(11)])ax.set_yticks([i * 20 for i in range(6)])# 坐标原点在左上角ax.xaxis.set_ticks_position("top")ax.invert_yaxis()# 显示plt.tight_layout()plt.show()plot_origin_left_top(values)

在这里插入图片描述

4.坐标原点-在中间

坐标系原点在中间位置

def plot_origin_center(values):"""3. 坐标原点在中间"""plt.figure(figsize=(6.4, 3.2), dpi=100)ax = plt.subplot()ax.plot(values)# 坐标轴范围ax.axis((-100, 100, -100, 100))# 坐标轴原点在中间ax.spines["top"].set_color("none")ax.spines["left"].set_position("zero")ax.spines["right"].set_color("none")ax.spines["bottom"].set_position("zero")# 显示plt.tight_layout()plt.show()plot_origin_center(values)

在这里插入图片描述

5.坐标系-辅助点

坐标系,添加辅助点和并标记点文字信息

def plot_point_and_text(values, points):"""4. 绘制辅助点和辅助点文字"""plt.figure(figsize=(6.4, 3.2), dpi=100)ax = plt.subplot()ax.plot(values)# 辅助点point_xx = [point[0] for point in points]point_yy = [point[1] for point in points]point_cc = ["r" for i in range(len(points))]point_labels = ["A", "B", "C", "D"]ax.scatter(x=point_xx, y=point_yy, c=point_cc)for index, point in enumerate(points):ax.text(x=point[0] * 1.01,y=point[1] *1.01,s=point_labels[index],fontsize=10,color="r",style="italic",weight="light",)# 坐标轴范围ax.axis((0, 100, 0, 100))# 坐标轴区间: x 为 10 , y 为 20ax.set_xticks([i * 10 for i in range(11)])ax.set_yticks([i * 20 for i in range(6)])# 显示plt.tight_layout()plt.show()points = [[30, 30], [50, 50], [80, 80]]
plot_point_and_text(values, points)

在这里插入图片描述

6.坐标系-辅助线

坐标系,添加横向和纵向辅助参考线

def plot_hline(values, lines):"""5. 绘制辅助线"""plt.figure(figsize=(6.4, 3.2), dpi=100)ax = plt.subplot()ax.plot(values)# 方式1: 基于坐标轴的辅助线ax.axhline(y=40, c="lightgrey", ls="dotted")ax.axhline(y=80, c="lightgrey", ls="dotted")# 方式2: 画线for line in lines:line_xx = [point[0] for point in line]line_yy = [point[1] for point in line]ax.plot(line_xx, line_yy, c="r", ls="dotted")# 坐标轴范围ax.axis((0, 100, 0, 100))# 坐标轴区间: x 为 10 , y 为 20ax.set_xticks([i * 10 for i in range(11)])ax.set_yticks([i * 20 for i in range(6)])# 显示plt.tight_layout()plt.show()lines = [([50, 0], [50, 100]),([20, 40], [80, 80])]
plot_hline(values, lines)
  • 灰色为方式一,添加的灰色辅助线
  • 红色为方式二,添加的红色辅助线
    在这里插入图片描述

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

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

相关文章

GoZero微服务个人探究之路(零)个人对微服务产生原因的思考,对前三篇的补充

为什么产生了微服务架构--必要性 这里我觉得看GoZero作者写的博文就可以有很好的体会 具体的,他画了这一张图(以电商后台系统为例子) 所以,我个人产生了如下思考 1.业务逻辑越来越复杂,层层嵌套,分解成微…

超级详细的linux centos NFS共享服务器搭建

目录 背景说明: 1.服务端操作 1.1创建目录 1.2创建组 1.3创建用户 1.4目录授权给www:www 1.5安装nfs服务端 1.6配置权限 1.7启动服务 2.客户端操作 2.1安装软件 2.2创建目录 2.3挂载 2.4测试 2.4.1读写删除测试 2.4.1只读测试 背景说明: 看了一个帖子NFS教程,…

Nginx 优化

1、http 主体优化 高效传输模式 vim /usr/local/nginx/conf/nginx.conf http { # 媒体类型include mime.types; # 默认媒体类型足够default_type application/octet-stream; sendfile on; # 取消注释tcp_nopush on; } sendfile on 开启高效文件传输模式,sendfi…

electron+vue项目使用serialport报错Cannot read property ‘indexOf‘ of undefined解决办法

描述 使用ElectronVue项目时引入serialport串口后启动时报下面错误 Cannot read property indexOf of undefined解决方法 打开vue.config.js找到pluginOptions -> electronBuilder -> externals添加serialport module.exports {pluginOptions: {electronBuilder: {e…

基于springboot+vue的网上订餐系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

Verilog基础:强度建模(一)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、强度建模基础 Verilog HDL提供了针对线网信号0、1、x、z的精准强度建模方式,这样可以允许将两个线网信号进行线与操作从而更加精确地描述出硬件行…

RK3568平台开发系列讲解(Linux系统篇)中断下文 tasklet

🚀返回专栏总目录 文章目录 一、什么是 taskle二、tasklet 相关接口函数2.1、静态初始化函数2.2、动态初始化函数2.3、关闭函数2.4、使能函数2.5、调度函数2.6、销毁函数三、测试程序沉淀、分享、成长,让自己和他人都能有所收获!😄

提升开发效率的google插件

在如今的软件开发领域,Google Chrome浏览器的开发者插件扮演着至关重要的角色,为开发人员提供了丰富的工具和功能,从而提高了开发效率。下面介绍几款强大的 Google 插件,它们在不同方面为开发者提供了便利,并能显著提升…

java多少线程操作共享数据线程安全问题加锁

1、有问题的写法 AdminController文件 package com.controller;import com.myThread.AdminThread; import com.myThread.MyCallable; import com.myThread.MyRunnable; import org.springframework.web.bind.annotation.*;import java.util.concurrent.ExecutionException; im…

系分备考计算机网络传输介质、通信方式和交换方式

文章目录 1、概述2、传输介质3、网络通信4、网络交换5、总结 1、概述 计算机网路是系统分析师考试的常考知识点,本篇主要记录了知识点:网络传输介质、网络通信和数据交换方式等。 2、传输介质 网络的传输最常见的就是网线,也就是双绞线&…

VirtualBox安装openSUSE-Leap-15.5虚拟机并配置网络

VirtualBox安装openSUSE-Leap-15.5虚拟机并配置网络 适用于在VirtualBox平台上安装openSUSE-Leap-15.5虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径Oracle VM VirtualBoxVirtualBox-7.0.12-159484D:\softwareopenSUSE-Leapopen…

MySQL——性能优化与关系型数据库

文章目录 什么是性能?什么是关系型数据库?数据库设计范式 常见的数据库SQL语言结构化查询语言的六个部分版本 MySQL数据库故事历史版本5.6/5.7差异5.7/8.0差异 什么是性能? 吞吐与延迟:有些结论是反直觉的,指导我们关…