通过python绘制正弦和余弦函数,从默认的设置开始,一步一步地调整改进,让它变得好看,变成我们初高中学习过的图象那样。通过这个过程来学习如何进行对图表的一些元素的进行调整。

01. 简单绘图

matplotlib有一套允许定制各种属性的默认设置。你可以几乎控制matplotlib中的每一个默认属性:图像大小,每英寸点数,线宽,色彩和样式,子图(axes),坐标轴和网格属性,文字和字体属性,等等。

虽然matplotlib的默认设置在大多数情况下相当好,你却可能想要在一些特别的情形下更改一些属性。from pylab import *

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)

C,S = np.cos(x), np.sin(x)

plot(x,C)

plot(x,S)

show()

复制代码

show image

02. 设置基本元素

这边的基本元素主要有几下几点:线的颜色,粗细,和线型

刻度和标签

还有图例

代码比较简单,基本上在我的第一讲内容里都讲过了。import numpy as np

from matplotlib import pyplot as plt

plt.figure(figsize=(10,6), dpi=80)

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)

C,S = np.cos(x), np.sin(x)

# 设置线的颜色,粗细,和线型

plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-", label=r'$sin(x)$')

plt.plot(x, S, color="red", linewidth=2.5, linestyle="-", label=r'$cos(x)$')

# 如果觉得线条离边界太近了,可以加大距离

plt.xlim(x.min()*1.2, x.max()*1.2)

plt.ylim(C.min()*1.2, C.max()*1.2)

# 当前的刻度并不清晰,需要重新设定,并加上更直观的标签

plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],

[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.yticks([-1,0,1],

[r'$-1$', r'$0$', r'$1$'])

# 添加图例

plt.legend()

plt.show()

复制代码

show image

03. 移动轴线

还记得我们在初高中学习的三角函数图象,可不是这样,它应该是有四个象限的。而这里却是一个四四方方的图表。

所以接下来,我们要做的就是移动轴线,让它变成我们熟悉的样子。

我们只需要两轴线(x和y轴),所以我们需要将顶部和右边的轴线给隐藏起来(颜色设置为None即可)。# plt.gca(),全称是get current axis

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

# 由于我们移动的是左边和底部的轴,所以不用设置这两个也可以

ax.xaxis.set_ticks_position('bottom')

ax.yaxis.set_ticks_position('left')

# 指定data类型,就是移动到指定数值

ax.spines['bottom'].set_position(('data',0))

ax.spines['left'].set_position(('data',0))

复制代码

关于set_position()这个函数中的data是啥意思?我查了下官网。解释如下

然后最后发现,上面的写法可以用一定更简洁的方式设置,是等价的。ax.spines['bottom'].set_position('zero')

ax.spines['left'].set_position('zero')

复制代码

show image

04. 添加注释

现在的图形部分已经成型,接下让我们现在使用annotate命令注解一些我们感兴趣的点。

我们选择2π/3作为我们想要注解的正弦和余弦值。我们将在曲线上做一个标记和一个垂直的虚线。然后,使用annotate命令来显示一个箭头和一些文本。t = 2*np.pi/3

# 利用plt.plot绘制向下的一条垂直的线,利用plt.scatter绘制一个点。

plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")

plt.scatter([t,],[np.cos(t),], 50, color ='blue')

plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',

xy=(t, np.sin(t)), xycoords='data',

xytext=(+10, +30), textcoords='offset points', fontsize=16,

arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

# 利用plt.plot绘制向上的一条垂直的线,利用plt.scatter绘制一个点。

plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")

plt.scatter([t,],[np.sin(t),], 50, color ='red')

plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',

xy=(t, np.cos(t)), xycoords='data',

xytext=(-90, -50), textcoords='offset points', fontsize=16,

arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

复制代码

在这里,你可能会对plt.annotate这个函数的用法,有所陌生。这里也解释一下。

第一个参数,就是注释内容; 第二个参数,xy,就是对哪一点进行注释; 第三个参数,xycoords,指定类型,data 是说基于数值来定位; 第四个参数,xytext,是注释的位置,结合第五个参数,就是根据偏移量来决定注释位置; 第五个参数,textcoords,值为offset points,就是说是相对位置; 第六个参数,fontsize,注释大小; 第七个参数,arrowprops,对箭头的类型的一些设置。

show image

05. 完整代码

以上都是对片段代码进行解释,这里放出完整的代码import numpy as np

from matplotlib import pyplot as plt

plt.figure(figsize=(10,6), dpi=80)

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)

C,S = np.cos(x), np.sin(x)

# 设置线的颜色,粗细,和线型

plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-", label=r'$sin(x)$')

plt.plot(x, S, color="red", linewidth=2.5, linestyle="-", label=r'$cos(x)$')

# 如果觉得线条离边界太近了,可以加大距离

plt.xlim(x.min()*1.2, x.max()*1.2)

plt.ylim(C.min()*1.2, C.max()*1.2)

# 当前的刻度并不清晰,需要重新设定,并加上更直观的标签

plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],

[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.yticks([-1,1],

[r'$-1$', r'$1$'])

# 添加图例

plt.legend(loc='upper left')

# plt.gca(),全称是get current axis

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

# 由于我们移动的是左边和底部的轴,所以不用设置这两个也可以

ax.xaxis.set_ticks_position('bottom')

ax.yaxis.set_ticks_position('left')

# 指定data类型,就是移动到指定数值

# ax.spines['bottom'].set_position('zero')

ax.spines['bottom'].set_position(('data',0))

ax.spines['left'].set_position(('data',0))

t = 2*np.pi/3

# 利用plt.plot绘制向下的一条垂直的线,利用plt.scatter绘制一个点。

plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")

plt.scatter([t,],[np.cos(t),], 50, color ='blue')

plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',

xy=(t, np.sin(t)), xycoords='data',

xytext=(+10, +30), textcoords='offset points', fontsize=16,

arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

# 利用plt.plot绘制向上的一条垂直的线,利用plt.scatter绘制一个点。

plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")

plt.scatter([t,],[np.sin(t),], 50, color ='red')

plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',

xy=(t, np.cos(t)), xycoords='data',

xytext=(-90, -50), textcoords='offset points', fontsize=16,

arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plt.show()

复制代码

python绘制条形图用什么函数_Python绘制正余弦函数图像完整代码相关推荐

  1. 【matplotlib库】利用matplotlib库绘制正余弦函数曲线的python程序,标注X、Y轴及标题|CSDN创作打卡

    使用python中的第三方库matplotlib绘制正余弦函数图形,并标注x,y轴以及标题等 ,绘制方法与matlab类似,可以说这里的matplotlib库便是Python中的matlab 程序代码 ...

  2. Matplotlib 绘制折线图 - 正余弦函数图像

    运行环境 : python 3.6.0 用 Matplotlib 的 scatter 方法绘制散点图 核心代码 : # -*- encoding: utf-8 -*- # @Version : Pyt ...

  3. ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)

    ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数.最大信息系数MIC) 目录 利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数.最大信息系 ...

  4. 正余弦函数图像python

    实验内容 1.题目 正余弦函数图像. 2.实验代码 import numpy as np import matplotlib.pylab as pl import matplotlib.font_ma ...

  5. 正余弦函数的matlab仿真,实现正余弦信号的算法比较

    实现正余弦函数的几种算法记录 1.几种算法的理论推导与matlab仿真 (1)Taylor级数逼近正余弦函数的推导 精度要求为20bit,其对应误差为9.536e-7,所以泰勒函数逼近的误差值要小于9 ...

  6. C语言正余弦函数定点查表算法原理及实现

    如果用数学库中的sin和cos函数计算,可能涉及浮点.乘法.除法运算,运行速率较低.这里介绍一种正余弦查表算法. 参考代码:SMT32 FOC电机库的mc_math.c. 首先我们知道正弦和余弦的函数 ...

  7. 正余弦函数及其反函数导数推导

    正余弦函数及其反函数导数推导 背景 三角函数的求导涉及到重要极限 limx→0sinxx\lim_{x\to0}\frac{sin x}{x} 的使用. 其反三角函数涉及复合函数求导.此文主要是对这两 ...

  8. python绘制条形图用什么函数_python绘制条形图方法代码详解

    1.首先要绘制一个简单的条形图 import numpy as np import matplotlib.pyplot as plt from matplotlib import mlab from ...

  9. python画数学函数_Python 绘制你想要的数学函数图形

    Python 非常热门,但除非工作需要没有刻意去了解更多,直到有个函数图要绘制,想起了它.结果发现,完全用不着明白什么是编程,就可以使用它完成很多数学函数图的绘制.通过以下两个步骤,就可以进行数学函数 ...

最新文章

  1. 10-flutter 使用http包请求和网络指示器
  2. php请求路由,PHP 新手入门指南 - 表单请求与路由
  3. 99岁杨振宁寄语青年学子:要清楚方向、选对方向
  4. C语言 extern “C” - C语言零基础入门教程
  5. 网盘大战-各网盘使用测试
  6. 《云云众声》第95期:业界大事接着看 HP成功收购Aruba;IBM战略变动 前景发展被看好...
  7. 大数据分析目前面临哪些问题
  8. python 代码行数统计工具_使用Python设计一个代码统计工具
  9. 管理者如何制定团队目标?读完这篇你就懂了.
  10. Word中设置三栏式表格
  11. 形式化方法 | Proof Engineering for Predicate Logic——Coq tatics 在谓词逻辑证明中的应用
  12. 让荣之学告诉你Shopee选品思路及运营方法!
  13. Unity AssetBundle的打包 发布 下载与加载
  14. macos 输入法切换卡顿 macos monterey (已解决)
  15. 手写操作系统之helloOS
  16. zlib解压缩zip
  17. ros中关于ros::Rate 和ros::spin()等的理解
  18. 微信公众号 开发详解02【自动回复、发布文章、自定义菜单、3种链接跳转】
  19. 【破解作品】Access密码查看器 破解版 注册码
  20. 计算机教案课后记怎么写,教案后记怎么写

热门文章

  1. 10大高性能开发宝石,我要消灭一半程序员!
  2. 一线互联网智能推荐系统架构演进
  3. 揭秘大型网站架构进化之路
  4. 网络负载均衡相关技术-DNS
  5. C++语言基本类型—浮点型
  6. 5、找出100到1000内的不含9的素数,存到result.txt文件中
  7. 工作中不能学的6种人
  8. Java axis 配置host_Java AxisProperties类代码示例
  9. mysql分区和分表比较_MySQL分区和分表的区别与联系
  10. 浅析基于双目视觉的自动驾驶技术