@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府

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

简单绘图

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

安装

pip install matplotlib

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

pip install matplotlib

虽然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()

绘制抛物线:

X1=np.linspace(-4,4,100,endpoint=True)

plt.plot(X1,(X1**2)/9)

以上就是本文的全部内容,希望对大家的学习有所帮助

非常感谢你的阅读

大学的时候选择了自学python,工作了发现吃了计算机基础不好的亏,学历不行这是

没办法的事,只能后天弥补,于是在编码之外开启了自己的逆袭之路,不断的学习python核心知识,深入的研习计算机基础知识,整理好了,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!

其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗?[点击加入]想做你自己想成为高尚人,加油!

python怎么画余弦函数图像与性质_python基础教程:Python绘制正余弦函数图像的方法...相关推荐

  1. python是一种面向____的高级语言_Python 基础教程Python是一种解释型、面向对象、动...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Python 基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底 ...

  2. python函数的唯一标识_python基础教程Python通用唯一标识符uuid模块使用案例

    1. 背景知识: UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, ...

  3. python 用if判断一个数是不是整数_Python基础教程07-函数和模块的使用

    在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解. x1+x2+x3+x4=8 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案.想到这一点问题的 ...

  4. python raise用处_python基础教程python raise的基本使用

    简介 当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常.一旦执行了raise语句,raise后面的语句将不能执行. 1.演示raise用法 try: s = None i ...

  5. python input函数无法输入字符串_Python手把手教程之用户输入input函数

    函数input() 函数input()让程序暂停运行,等待用户输入一些文本.获取用户输入后,Python将其存储在一个变量中,以方便你使用. 例如,下面的程序让用户输入一些文本,再将这些文本呈现给用户 ...

  6. python拟合三元函数_python基础教程之常用内置函数、三元运算、递归

    目录 常用内置函数 abs/round/sum eval/exec enumerate max/min sorted zip map filter 补充:reduce lambda 初识递归 再谈递归 ...

  7. python循环叠加求和_python基础教程python使用隐式循环快速求和的实现示例

    如何快速的求出1到x的和呢?代码如下: NB(注意): # 后面的部分表示输出结果. class Debug: def calculateSum(self, size): return sum(ran ...

  8. python基础教程zip密码_python基础教程Python实现加密的RAR文件解压的方法(密码已知)...

    博主之前在网上找了很多资料,发现rarfile库不能直接调用,需要安装unrar模块,下面将详细介绍整个实现流程. 第一步:安装unrar模块,直接pip install unrar可能会找不到库,需 ...

  9. python语言编写一个生成九宫格图片的代码_python基础教程python简单实现9宫格图片实例...

    在日常生活中我们经常在朋友圈看到有人发九宫格图片,其实质就是将一张图片切成九份,然后在微信中一起发这九张图. 那么我们如何自己动手实现呢? 说到切图Python 就可以实现,主要用到的 Python ...

最新文章

  1. 电路设计中电阻电容电感的选择原则
  2. 干货丨一文读懂深度学习与机器学习的差异
  3. 【算法入门】用Python手写五大经典排序算法,看完这篇终于懂了!
  4. 01.java内存模型
  5. linux_shell_根据网站来源分桶
  6. 从头算和密度泛函理论_PHP Laravel教程–如何从头开始构建关键字密度工具
  7. [USACO09JAN]安全出行Safe Travel
  8. 进行数据离散化的原因_数据离散化及其KMeans算法实现的理解
  9. ProGuard在windows上一定要加dontusemixedcaseclassnames
  10. Pycharm Debug调试(纯干货)
  11. ALPS磁式传感器和轴地磁式传感器
  12. 计算机桌面如何整理,怎么整理电脑桌面
  13. 7月18百度测试实习生二面经历
  14. HyperLedger Fabric - 超级账本(2.2)启动网络 - 手动
  15. SpringCloud 微服务架构开源项目,适合接私活、毕业设计(附源码)
  16. 一个优秀的前端都应该阅读这些文章
  17. 震撼的真相,这些照片告诉你什么叫“色即是空”
  18. 小米10至尊纪念版配置参数
  19. 计算机含金量最高的证书
  20. 地大武汉C语言考研真题,2021中国地质大学武汉考研历年真题专业目录

热门文章

  1. 天语 W619 一键ROOT 教程
  2. php h5支付没有返回app中,很多人都不知道的监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法...
  3. android11正式版,谷歌悄无声息地放出安卓11的正式版本
  4. 甘特图版2012年伦敦奥运会赛程表
  5. 虚拟化的成本计算实例
  6. 程序员有必要拥有一台自己的云服务器吗?为什么?
  7. 重要通知|Strata Data Conference北京站最优惠票价今天截止。
  8. 云开发中的战斗机 Laf,让你像写博客一样写代码
  9. 宝塔面板网站备份的两套方案
  10. python实现文字转语音_Python 文字转语音