利用python绘制笛卡尔直角坐标系
作者:帅帅de三叔 发布时间:2021-03-07 13:39:56
标签:python,绘制,直角,坐标系
背景:
有些数学题目经常要用到数形结合思想,尤其是一些函数题目,如果能够把函数图像画出来进行解题的话,思路会更加清晰明了。python绘图主要用到matplotlib
绘图模块,平时我们看到的往往是下面这种图
用一个实线矩形把几何图形封闭起来,看起来好像在一个象限里面。现实中,我们通常采用描点作图,首先建立一个笛卡尔直角坐标系,然后根据一个自变量,一个因变量的在坐标系里面描一些点,然后用一条光滑曲线把这些点串起来,更像下面这种图
那么,我们怎么才能利用matplotlib
模块画出上面的正弦函数呢?先看代码,再听分解
代码:
import math
import numpy as np #导入数值计算模块
import matplotlib.pyplot as plt #导入绘图模块
import mpl_toolkits.axisartist as axisartist #导入坐标轴加工模块
fig=plt.figure(figsize=(4,2)) #新建画布
ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) #将绘图区对象添加到画布中
ax.axis[:].set_visible(False) #隐藏原来的实线矩形
ax.axis["x"]=ax.new_floating_axis(0,0,axis_direction="bottom") #添加x轴
ax.axis["y"]=ax.new_floating_axis(1,0,axis_direction="bottom") #添加y轴
ax.axis["x"].set_axisline_style("->",size=1.0) #给x坐标轴加箭头
ax.axis["y"].set_axisline_style("->",size=1.0) #给y坐标轴加箭头
ax.annotate(s='x' ,xy=(2*math.pi,0) ,xytext=(2*math.pi,0.1)) #标注x轴
ax.annotate(s='y' ,xy=(0,1.0) ,xytext=(-0.5,1.0)) #标注y轴
plt.xlim(-6.3,6.3) #设置横坐标范围
plt.ylim(-1.1,1.1) #设置纵坐标范围
ax.set_xticks([-2*math.pi,-math.pi,0,math.pi,2*math.pi]) #设置x轴刻度
ax.set_yticks([-1,1]) #设置y轴刻度
y=[] #用来存放函数值
x=np.linspace(-2*math.pi,2*math.pi,100) #构造横坐标数据
for xi in x: #生成函数值
y.append(math.sin(xi))#追加
plt.plot(x,y,color="blue") #描点连线
plt.show() #出图
代码解读:
工欲善其事必先利其器,画坐标轴当然要用到坐标轴加工类 axisartist
,接下来就是用匠心精神不断打磨坐标轴。
首先,隐藏原来的实线矩形
ax.axis[:].set_visible(False)
其次,添加自定义x轴和y轴
ax.axis["x"]=ax.new_floating_axis(0,0,axis_direction="bottom")
ax.axis["y"]=ax.new_floating_axis(1,0,axis_direction="bottom")
接着,加箭头,设置箭头款式,并把坐标轴标注出来
ax.axis["x"].set_axisline_style("->",size=1.0)
ax.axis["y"].set_axisline_style("->",size=1.0)
ax.annotate(s='x' ,xy=(2*math.pi,0) ,xytext=(2*math.pi,0.1))
ax.annotate(s='y' ,xy=(0,1.0) ,xytext=(-0.5,1.0))
修缮刻度和范围:
plt.xlim(-6.3,6.3)
plt.ylim(-1.1,1.1)
ax.set_xticks([-2*math.pi,-math.pi,0,math.pi,2*math.pi])
ax.set_yticks([-1,1])
到这里,一个比较好看的正弦函数图像才算画出来,逻辑上来说,要使得坐标轴的标注位置恰当,加标注操作应该在设置坐标轴范围操作之后。
来源:https://blog.csdn.net/zengbowengood/article/details/102862072


猜你喜欢
- 本文实例讲述了Python类的用法。分享给大家供大家参考。具体如下:先看一段代码:#!/usr/bin/env pythonclass Te
- 工具安装主要调用win32库实现分辨率获取和读写,需要安装pywin32示例中是从execl列表中读取需要设置的分辨率,需要安装xlrd用到
- 前言使用 webstrom 调试 Vue.js 单页面程序,理论上来说应该是支持所有用 webpack 构建的应用程序webstrom 版本
- 概述Web环境我们假设为Apache。在编译PHP的时候,为了能够让Apache支持PHP,我们会生成一个mod_php5.so的模块。Ap
- 华丽的文本框演示首先看看演示结果:实现代码import matplotlib.pyplot as pltplt.text(0.8, 0.5,
- 本文实例讲述了Python实现提取XML内容并保存到Excel中的方法。分享给大家供大家参考,具体如下:最近做一个项目是解析XML文件,提取
- 0、问题在用Tkinter进行编程时,需要在一个Frame下显示多个图片,但是不管怎么设置都是只显示最后一张,就像这样:代码for i in
- 先给大家快捷总结:文件格式Python库文本文件内置open函数CSV文件csvJSON文件jsonXML文件xml.etree.Eleme
- 本文实例讲述了python使用socket进行简单网络连接的方法。分享给大家供大家参考。具体如下:import socketprint &q
- 代码:import tensorflow as tfsess = tf.Session()check_point_path = 'v
- 说明1. 使用google翻译服务获得翻译和语音;2. 使用mplayer播放获得的声音文件,因此,如果要播放语音,请确保PATH中能够找到
- Python列表List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串
- 本文实例讲述了PHP面向对象程序设计继承用法。分享给大家供大家参考,具体如下:<?php//继承是子类(派生类)从父类(基类,超类)继
- 本文实例讲述了Python编程实现的简单神经网络算法。分享给大家供大家参考,具体如下:python实现二层神经网络包括输入层和输出层# -*
- 阅读上一篇:你是真正的用户体验设计者吗? Ⅰwrite2vin 的 原文路宛兮写的简介:本文介绍了: 1.关于用户体验的几种观点; 2.关于
- Python打包分发工具setuptools:曾经 Python 的分发工具是 distutils,但它无法定义包之间的依赖关系。setup
- 常有新手问我该怎么备份数据库,下面介绍3种备份数据库的方法:(1)备份数据库文件MySQL中的每一个数据库和数据表分别对应文件系统中的目录和
- 概述在我们使用内置打印函数print时,打印出的Python数据结构对象总是一行的输出的方式,这样对数据结构较复杂或数据较多的对象的显示并不
- vue+el使用this.$confirm不能阻断代码往下执行在vue+element ui的前端框架中使用el的confirm弹窗,遇到一
- 正则表达式中的符号例子 | 是或的关系,只要存在就会被捕获匹配到的数据只按字符串顺序返回,而不是按照匹配规则返回In [18]: