Pyplot

http://www.labri.fr/perso/nrougier/teaching/matplotlib/

pyplot提供了一个方便的matplotlib基于对象库的借口,是模仿了matlab,因此,在pyplot中的很多命令和参数,都和matlab相似。

简单的画图simple plot

我们想在同一个图中划出一个cos和sin函数图,第一步是获取cos和sin的数据,构建函数

import numpy as np

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

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

定义了一个numpy的数组X,从-π到π,共256个值,同时定义了C和S,也就是两个三角函数,也有256个值。也是一个数组,也可以说是列表。

 

在matplotlib中,有一系列的默认设置,用来自定义各种属性。可以通过配置各种属性,来调整整个图,比如表格大小、像素、线的宽度,颜色和风格,线轴、坐标、表格属性、文本和字体属性。在很多情况下,默认的设置都是比较好用的,如果是有特殊的需求,可以修改这些属性值。

开始画图。

from matplotlib import pyplot as plt

import numpy as np

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

y = np.sin(x)

z = np.cos(x)

 

plt.plot(x,y)

plt.plot(x,z)

 

plt.show()

 

实例化默认值

在下面的脚本中,可以通过修改所有的表格属性值,来影响图标的展出。而在上面的图中,这些值都被明确的设定为默认值,现在可以通过交互式的操作,来看一下这些值影响的效果。

下面是线条属性值和线条样式。

,取9个值
,取5个值
plt.yticks(np.linspace(-1,1,5,endpoint=True))
plt.show()

 

画出来的图如下所示:

第一步:修改线条颜色,cos线条是蓝色,sin线条是红色,设置线条宽度。

plt.plot(x,y,color='blue',linewidth=1.0,linestyle='-')
plt.plot(x,z,color='red',linewidth=1.0,linestyle='-')

 

第二步:修改限制,当前表格的限制有一点紧,可以适当扩充一下表格大小,主要是x和y的两边。

#放大x和y轴
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(y.min()*1.1,y.max()*1.1)

 

第三步:设置刻度值,因为在三角函数的图像中,x轴上面应该显示的是从-π到π的5个值。但是实际上显示的是数字,所以想通过修改这个刻度值,来显示。

#设置x轴的刻度值,显示pi
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi])

第四步:设置刻度值标签,实际上上面的图还是没有显示π。现在是已经均分了x轴,虽然现实的是3.14,最好还是显示π,在设置刻度值的时候,在第二个参数中也提供了对应的标签。

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$'])

两个参数,将第一个参数值,用第二个参数来显示

第五步:移动spines

Spine是一组线,连接了轴心刻度,在数据区域的边界,可以放置在任意位置,目前是防止在轴心的边界上了。需要改变一下,移动到中间,坐标系有四个象限,放弃了顶部和右侧的部分,也就是轮廓。实际上意思是说,在这个图里面,spine是最外侧的4条线,将数据图像封闭在其中。通过移动spine,让坐标系的中心在原点,然后将上侧和右侧的spine删除,也就是 取消颜色。然后将底部和左侧的spine,移动到数据为0的区域。

有4个spine,分别是top,bottom,right和left,分别对应封闭这个数据图形的4个边。需要修改的代码如下:

的位置
的位置
ax.spines['top'].set_color('none')#将top线的颜色设置为无
ax.spines['right'].set_color('none')#将right线的颜色设置为无

第六步:增加图例

在图的左上角增加图例,需要在plot方法中增加关键字label,然后这个关键字会被在legend中调用。

#增加图例
plt.plot(x,y,label='Sin(x)')
plt.plot(x,z,label='Cos(x)')
plt.legend(loc='upper left')#将图例放在左上角

 

第七步:注释特定点

通过注释命令,可以为特定的点增加注释,也就是在图中标出这些特定的点,假如要在途中,为2π/3标注出sin和cos的值。需要在曲线上,画一条垂直的虚线,然后通过箭头,在图上表示出来。

#在图上增加标注信息
t = 2*np.pi/3
plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=1.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color ='blue')

plt.annotate(r'$\cos(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, np.cos(t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

 

用python画三角函数的更多相关文章

  1. 沉淀再出发:用python画各种图表

    沉淀再出发:用python画各种图表 一.前言 最近需要用python来做一些统计和画图,因此做一些笔记. 二.python画各种图表 2.1.使用turtle来画图 import turtle as ...

  2. python画樱花

    用python画简单的樱花 代码如下: import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, t): ...

  3. python 画小猪佩奇

    转自:python画个小猪佩奇 # -*- coding: utf-8 -*- """ Created on Mon May 20 11:36:03 2019 @auth ...

  4. 用python画 pareto front

    用python画 pareto front 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2D pf import os import matplotlib.pyplot as plt im ...

  5. python 画3D的高斯曲线

    用python画3D的高斯曲线,我想如果有多个峰怎么画? import numpy as npimport matplotlib.pyplot as pltimport mathimport mpl_ ...

  6. 用Python计算三角函数之acos()方法的使用

    用Python计算三角函数之acos()方法的使用 acos()方法返回x的反余弦值,以弧度表示. 语法 以下是acos()方法的语法:     acos(x) 注意:此函数是无法直接访问的,所以我们 ...

  7. python画一只佩奇

    用python画一只佩奇 from turtle import* def nose(x,y):#鼻子 penup()#提起笔 goto(x,y)#定位 pendown()#落笔,开始画 sethead ...

  8. 利用python画出动态高优先权优先调度

    之前写过一个文章. 利用python画出SJF调度图 动态高度优先权优先调度 动态优先权调度算法,以就绪队列中各个进程的优先权作为进程调度的依据.各个进程的优先权在创建进程时所赋予,随着进程的推进或其 ...

  9. 【python画圆】pip安装库时出现Read timed out.解决办法

    昨天第一次用python画圆,当时并没有安装numpy库(导入数据包)和matplotlib库(导入图形包),于是尝试用pip安装库 首先,我先更新了pip,如下图: 顺便附上成功截图: 然后安装nu ...

随机推荐

  1. 学习 Spring (七) Resource

    Spring入门篇 学习笔记 Resource: Spring 针对资源文件的统一接口 UrlResource: URL 对应的资源,根据一个 URL 地址即可构建 ClassPathResource ...

  2. Git简介及安装

    1 Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码 ...

  3. Codeforces Round #432 Div. 1

    A:大胆猜想合法点不会很多,于是暴力检验,一旦发现不合法就break,可以random_shuffle一下. #include<iostream> #include<cstdio&g ...

  4. Codeforces Round #459 Div. 1

    C:显然可以设f[i][S]为当前考虑到第i位,[i,i+k)的状态为S的最小能量消耗,这样直接dp是O(nC(k,x))的.考虑矩阵快速幂,构造min+转移矩阵即可,每次转移到下一个特殊点然后暴力处 ...

  5. Typecho——数据库无法连接问题

    报错 对不起,无法连接数据库,请先检查数据库配置再继续进行安装 解决方案 创建数据库 reate database databaseName; 远程权限 开启远程权限 GRANT ALL PRIVIL ...

  6. HUST 1555 数学作业

    参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6394892.html 1555 - A Math Homework 时间限制:1秒 内存限制:12 ...

  7. Codeforces Round #505 Div. 1 + Div. 2

    传送门:>Here< 从来没打过\(CF\)(由于太晚了)-- 不知道开学了以后有没有机会能够熬夜打几场,毕竟到现在为止都是\(unrated\)好尴尬啊~ 今天早上打了几题前几天的比赛题 ...

  8. 使用npm安装appium时的坑

    使用命令安装appium 命令安装 npm install -g appium(如果安装失败那么就指定国内的淘宝源安装吧,官方源我应该试了n次费了很大劲才安装成功) 指定淘宝源安装:设置 npm 淘宝 ...

  9. django.db.utils.DataError: (1406, "Data too long for column 'gender' at row 1")

    报错现象 在使用 django 创建 超级用户的时候提示报错 Password (again): ytyt521521 Traceback (most recent call last): File ...

  10. 脚本自动封掉并发数过高的 IP

    防止扫描器对服务器恶意扫描,可以对 iptables 规则做了比较严格的配置. 以下配置可作为参考: #lo -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j A ...