python绘图——坐标轴

news2025/4/21 10:08:23

1. 2D坐标轴

1.1 绘制简单的曲线

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)#-1到1中画50个点
y=x**2
plt.plot(x,y,color='green')
plt.tick_params(axis='x',colors='blue')
plt.tick_params(axis='y',colors='red')
plt.show()

作图:
在这里插入图片描述

1.2 坐标轴的刻度线向内

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)#-1到1中画50个点
y=x**2
# 下面两行代码要放在plt.plot的前面
plt.rcParams['xtick.direction'] = 'in'#将x轴的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in'#将y轴的刻度线方向设置向内

plt.plot(x,y,color='green')
plt.tick_params(axis='x',colors='blue')
plt.tick_params(axis='y',colors='red')
plt.show()

在这里插入图片描述

1.3 将坐标刻度从整0开始

plt.margins(x=0)
plt.margins(y=0)

#设置坐标轴范围
#plt.ylim([0,0.8])
#plt.xlim([0,0.75])

从0开始,不留空隙

1.4 设置刻度栅格

简单的刻度:

plt.grid()

在这里插入图片描述

主刻度和次刻度

import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(17,3))
ax = plt.gca()
ax.xaxis.set_major_locator(plt.MultipleLocator(0.2))    #设置x轴主刻度
ax.xaxis.set_minor_locator(plt.MultipleLocator(0.04))   #设置x轴次刻度
ax.yaxis.set_major_locator(plt.MultipleLocator(0.5))    #设置x轴次刻度
ax.yaxis.set_minor_locator(plt.MultipleLocator(0.1))    #设置x轴次刻度
ax.grid(which='major',axis="both",linewidth=0.75,linestyle='-',color='r')
ax.grid(which='minor',axis="both",linewidth=0.25,linestyle='-',color='r')
x=np.linspace(0,3*np.pi,50)#-1到1中画50个点
y=2*np.sin(x)
plt.plot(x,y)
plt.margins(x=0)
plt.margins(y=0)
plt.show()

下面的图形类似于心电图纸绘制,关于心电图相关的绘制,具体在使用python绘制心电图中体现:
在这里插入图片描述

1.5 不显示坐标

只是坐标刻度不可见,两种方式的效果一样

# plt.xticks([])
plt.yticks([])

# 或者下面的
# frame.axes.get_xaxis().set_visible(False) # x 轴不可见
frame.axes.get_yaxis().set_visible(False) # y 轴不可见

在这里插入图片描述
关闭两者坐标轴,只有曲线图形

plt.axis('off')

在这里插入图片描述

1.6 坐标值

为坐标设置刻度值, 并且将刻度值旋转45度

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,2,50)#-1到1中画50个点
y=x**2
plt.rcParams['xtick.direction'] = 'in'#将x轴的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in'#将y轴的刻度线方向设置向内
ax = plt.gca()
xlabel=[str(val)+'_1' for val in range(100,110)]
ax.set_xticklabels(xlabel)
plt.xticks(rotation = 45)
plt.plot(x,y,color='green')
plt.tick_params(axis='x',colors='blue')
plt.tick_params(axis='y',colors='red')
plt.margins(x=0)
plt.margins(y=0)
plt.show()

在这里插入图片描述

1.7 绘制横线和竖线

plt.axvline(1)
plt.axhline(1.5)

![在这里插入图片描述](https://img-blog.csdnimg.cn/519c11090ad8418f92e84d6a6bd7d19d.png

1.8 设置坐标点的颜色

下图中设置y轴第3个坐标值的颜色为黄色,x轴第6个坐标值颜色为绿色。

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,2,50)#-1到1中画50个点
y=x**2
plt.rcParams['xtick.direction'] = 'in'#将x轴的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in'#将y轴的刻度线方向设置向内
ax = plt.gca()
plt.plot(x,y,color='green')
plt.tick_params(axis='x',colors='blue')
plt.tick_params(axis='y',colors='red')
ax.get_yticklabels()[3].set_color("y")
ax.get_xticklabels()[6].set_color("g")
plt.show()

在这里插入图片描述

1.9 双坐标

代码如下:

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.01, 10.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)

fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)

ax2 = ax1.twinx()  # instantiate a second axes that shares the same x-axis

color = 'tab:blue'
ax2.set_ylabel('sin', color=color)  # we already handled the x-label with ax1
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)

fig.tight_layout()  # otherwise the right y-label is slightly clipped
plt.show()

在这里插入图片描述

1.10 坐标设置汉字

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

2. 3D坐标轴

2.1 绘制3D散点图

关键代码ax.scatter(xs, ys, zs, c=c, marker=m),输入数据xs,ys,zs是相同长度的一维数据。c是颜色,marker是散点类型。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
def randrange(n, vmin, vmax):
    return (vmax - vmin)*np.random.rand(n) + vmin
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
 
n = 100
for c, m, zlow, zhigh in [('r', '*', -10, 20), ('b', 'o', -30, -10)]:
    xs = randrange(n, 23, 32)
    ys = randrange(n, 0, 100)
    zs = randrange(n, zlow, zhigh)
    ax.scatter(xs, ys, zs, c=c, marker=m)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()

在这里插入图片描述

2.2 绘制3D曲面图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig=plt.figure(num=1,figsize=(8,6))
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
# height value
Z = np.cos(R)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'),edgecolors='white')
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))#投影等高线,改变zdir='x', offset=-4实现投影到不同坐标轴     
ax.set_zlim(-2, 2)
ax.tick_params(axis='x',colors='g')
ax.tick_params(axis='y',colors='g')
ax.tick_params(axis='z',colors='g')
plt.show()

在这里插入图片描述

2.3 绘制3D柱形图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

X=np.arange(0, 9, step=1)#X轴的坐标
Y=np.arange(0, 10, step=1)#Y轴的坐标
arr = [[np.random.randint(1,50) for i in range(9)] for i in range(10)]
Z = np.array(arr)

xx, yy=np.meshgrid(X, Y)#网格化坐标
X, Y=xx.ravel(), yy.ravel()#矩阵扁平化
bottom=np.zeros_like(X)#设置柱状图的底端位值
Z=Z.ravel()#扁平化矩阵

width=height=0.8#每一个柱子的长和宽
#绘图设置
fig=plt.figure()
ax=fig.gca(projection='3d')#三维坐标轴
ax.bar3d(X, Y, bottom, width, height, Z, shade=True,color='lightgreen')#
#坐标轴设置
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()

在这里插入图片描述

引用

[1]Matplotlib 文档
[2]python绘制三维图
[3]python-绘制3D柱形图
[4]Python + matplotlib更改纵横坐标刻度颜色
[5]Python绘图总结(Matplotlib篇)之坐标轴及刻度

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

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

相关文章

游戏开发 LinkedList

inkedList底层是双向链表,一个节点挂着一个节点LinkedList不需要设定长度,不需要扩容LinkedList 的优缺点 优点 ① 往里面插入一些元素的时候不需要像ArrayList数组那样需要挪动大量的元素了,直接在链表里加入一个节点就可以了 ② 如果要不断…

【数据结构】LinkedList与双向链表

目录 一、认识集合类LinkedList 1、认识 2、构造方法 二、实现双向非循环链表 1、准备 2、方法的实现 1.遍历 2.有效节点个数 3.是否包含key 4.清空链表 5.头插法 6.尾插法 7.指定位置插入 8.删除第一次出现的key 9.删除所有的key 一、认识集合类LinkedList 1、认…

第01讲:Linux系统下Redis的安装及配置

本文所安装的Redis版本为5.0.4,请自行到官网下载,或者私信博主 前言:什么是Redis 介绍Redis之前,先了解下NoSQL (Not only SQL)不仅仅是SQL属于非关系型数据库;Redis就属于非关系型数据库传统的…

【AJAX】入门AJAX

入门AJAXAJAX概述AJAX的使用XMLHttpRequest创建XMLHttpRequest对象XMLHttpRequest对象的常用方法XMLHttpRequest对象的常用属性使用AJAX POST请求实现‘判断用户名’案例实现步骤模拟数据库表单前端代码后端程序效果展示AJAX概述 什么是AJAX? AJAX全称(…

聊聊如何利用redis实现多级缓存同步

前言 前阵子参加业务部门的技术方案评审,故事的背景是这样:业务部门上线一个专为公司高管使用的系统。这个系统技术架构形如下图 按理来说这个系统因为受众很小,可以说基本上没并发,业务也没很复杂,但就是这么一个系…

【Java】做了个 Java 简洁版身材计算

前言 (当前文章仅说明做了这个 身材计算 简洁版。) 为了参加比赛 码上掘金编程后端挑战赛 (juejin.cn)… 我选择了做一个简洁版的身材计算… 效果展示 code - juejin 地址:身材计算(Java版) - 码上掘金 完整代码 …

RK3568平台开发系列讲解(环境篇)kernel编译及打包

🚀返回专栏总目录 文章目录 一、编译步骤二、编译脚本沉淀、分享、成长,让自己和他人都能有所收获!😄 📢此方法常用于 kernel 的开发和调试,以下的方法既编译 kernel 部分时, 同时打包成 boot.img, 这样加快了我们开发的速度; 一、编译步骤 进入内核目录下, 输入…

进阶中级前端必备知识点

1、从输入url到页面显示出来发生了什么 1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回需要的数据 5.浏览器解析渲染页面 解析HTML,生成DOM树,解析CSS,生成CSSOM树 将DOM树和CSSOM树结合,生成渲染树(Render T…

智能无障碍轮椅——DX-BT05 4.0蓝牙模块

文章目录常用的蓝牙模块有哪几种?蓝牙的透传蓝牙的运行模式开发方式AT指令集开发方式AT指令集BT-05调试硬件图DX-BT05 4.0蓝牙模块介绍连接步骤:常用的几个AT指令主模式的AT指令常用的蓝牙模块有哪几种? 蓝牙主要有HC-05、HC-06、BT-04、BT-…

SpringBoot整合mybatis实现增删改查、分页查询

前提: 先搭建出最基本的SpringBoot项目 SpringBoot框架快速入门搭建Hello World,请点击下面链接:https://blog.csdn.net/KangYouWei6/article/details/127018638 一、建立数据库 /*Navicat Premium Data TransferSource Server : 本地…

搜狗SEO优化技巧,搜狗收录批量查询技巧

搜狗SEO优化技巧 首先要知道搜索引擎的搜索原理,简而言之就是蜘蛛怎么爬取你的新网站,一般新的企业网站蜘蛛采取的是横向抓取,先收录首页,然后栏目页、子网页,这样一级一级的往下走,建网站用com域名。新…

设计测试用例的方法

设计测试用例的方法有很多,等价类划分法是重点,边界值分析法次之,对于因果图法知道概念就行,老师说考试不会考,但是历年考试中貌似考过一次,这就不知道了,反正考试大题基本课本例题,…

(十八)Vue之生命周期

文章目录引出生命周期外部的定时器实现生命周期实现生命周期详解挂载流程更新流程销毁流程总结Vue学习目录 上一篇:(十七)Vue之自定义指令 引出生命周期 先看一个需求:一上来就让一段文字的透明度循环从1-0-1的过程&#xff0c…

Fabric.js 文本自动换行的实现方式

本文简介 点赞 关注 收藏 学会了 在 fabric.js 提供的文本组件中,默认状态是不会自动换行。如果你的使用场景中需要自动文本自动换行,可以使用 Textbox ,并将 splitByGrapheme 设置为 true 即可。 文本自动换行 如果需要实现本文自动换行…

盘点:保护企业数据安全的10种方法

即便是大型企业也无法防止网络攻击导致的数据泄露,但有多种保护数据安全的方法。 许多公司谨慎处理敏感信息,包括客户个人信息、企业财务记录和账户,以及企业暂时不想泄露的绝密项目,保持数据的安全至关重要。 全球知名企业发生了…

Java(十五)----Stream流

1 Stream流 1.1 Stream流的优势 Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API。 Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为Stream API可以极大提…

11 深入了解InnoDB引擎

1. Innodb逻辑存储结构 表空间:ibd文件段segment:区extent:一个区大小为1m,里面有64个page页;为了保证页的连续性innodb会一次从磁盘申请4-5个区页page:一个page页大小为默认为16k行row:Trx id、…

深入探究Python上下文管理器

引子 上下文管理器是一种简化代码的有力方式,其内部也蕴含了很多Python的编程思想,今天我们就来探究一下Python的上下文管理器。 大家之前都知道,使用Python打开文件的时候最好要使用with语句,因为这样就算在文件操作中出现了异常…

基于java的校园共享自行车系统的设计与实现/校园共享单车管理系统

摘 要 伴随着社会以及科学技术的发展,互联网已经渗透在人们的身边,网络慢慢的变成了人们的生活必不可少的一部分,紧接着网络飞速的发展,管理系统这一名词已不陌生,越来越多的学校、公司等机构都会定制一款属于自己个…

React扩展:setState、lazyLoad、hook

目录 1.setState的两种写法 ①setState(对象,[callback])②setState(函数,[callback])函数可以接收到stata和props,callback回调函数能获取状态更新后的数据 写了个Demo组件 import React, { Component } from reactexport default class Demo extends Component…