matplotlib 绘图实例01:正弦余弦曲线
该讲的实例结果如下图所示:

第01步:导入模块,并设置显示中文和负号的属性;
import matplotlib.pyplot as plt
import numpy as np plt.rcParams['font.sans-serif']=['SimHei'] # 用于正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
第02步:创建x轴数据,从-pi到pi平均取256个点;
x = np.linspace(-np.pi,np.pi,256,endpoint=True) #获取x坐标
第03步:创建y轴数据,根据X的值,求正弦和余弦函数;
sin,cos = np.sin(X),np.cos(X) #获取y坐标
第04步:绘制正弦、余弦函数图,并将图形显示出来,设置正弦函数曲线的颜色为蓝色(blue),线型为实线,线宽为2.5mm;余弦函数曲线的颜色为红色(red),线型为实线,线宽为2.5mm。显示结果如下图所示;
plt.plot(X,sin,"b-",lw=2.5,label="正弦Sin()")
#X:x轴;sin:y轴;b-:color="blue",linestyle="-"的简写;lw:linewidth;label:线条的名称,可用于后面的图例
plt.plot(X,cos,"r-",lw=2.5,label="余弦Cos()") #cos:y轴;r-:color="red";
plt.show() #显示图表

第05步:设置坐标轴的范围,将x轴、y轴同时拉伸1.5倍,显示结果如下图所示;
plt.xlim(X.min()*1.5,X.max()*1.5)
plt.ylim(cos.min()*1.5,cos.max()*1.5)

第06步:设置x轴、y轴的坐标刻度,显示结果图下图所示;
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])

第07步:为图表添加标题,标题内容为“绘图实例之COS()&SIN()”,字体大小设置为16,字体颜色设置为绿色(green);显示结果如下图所示;
plt.title("绘图实例之COS()&SIN()",fontsize=16,color="green")

第08步:在图表右下角位置添加备注标签,标签文本为“By:biyoulin”,文本大小为16,文本颜色为紫色(purple) ,显示结果如下图所示;
plt.text(+2.1,-1.4,"By:biyoulin",fontsize=16,color="purple")

第09步:获取Axes对象,并隐藏右边界和上边界;显示结果如下图所示;
ax=plt.gca() #获取Axes对象
ax.spines['right'].set_color('none') #隐藏右边界
ax.spines['top'].set_color('none') #隐藏上边界

第10步:将x坐标轴的坐标刻度设置在坐标轴下侧,坐标轴平移至经过零点(0,0)的位置,显示结果如下图所示;
ax.xaxis.set_ticks_position('bottom') #x轴坐标刻度设置在坐标轴下面
ax.spines['bottom'].set_position(('data',0)) #x轴坐标轴平移至经过零点(0,0)位置
第11步:将y坐标轴的坐标刻度设置在坐标轴左侧,坐标轴平移至经过零点(0,0)的位置,显示结果如下图所示;
ax.yaxis.set_ticks_position('left') #y轴坐标刻度设置在坐标轴下面
ax.spines['left'].set_position(('data',0)) #y轴坐标轴平移至经过零点(0,0)位置

第12步:添加图例,图例位置为左上角,图例文字大小为12,显示结果如下图所示;
plt.legend(loc="upper left",fontsize=12)

第13步:在正弦函数曲线上找出x=(2π/3)的位置,并作出与x轴垂直的虚线,线条颜色为蓝色(blue),线宽设置为1.5mm;在余弦函数曲线上找出x=-π的位置,并作出与x轴垂直的虚线,线条颜色为红色(red),线宽设置为1.5mm;显示结果如下图所示;
t1 = 2*np.pi/3 #设定第一个点的x轴值
t2 = -np.pi #设定第二个点的x轴值
plt.plot([t1,t1],[0,np.sin(t1)],color ='b',linewidth=1.5,linestyle="--")
#第一个列表是x轴坐标值,第二个列表是y轴坐标值
#这两个点坐标分别为(t1,0)和(t1,np.sin(t1)),根据两点画直线
plt.plot([t2,t2],[0,np.cos(t2)],color ='r',linewidth=1.5,linestyle="--")
#这两个点坐标分别为(t2,0)和(t2,np.cos(t2)),根据两点画直线

第14步:用绘制散点图的方法在正弦,余弦函数上标注这两个点的位置,设置点大小为50,设置相应的点颜色;
plt.scatter([t1,],[np.sin(t1),], 50, color ='b')
plt.scatter([t2,],[np.cos(t2),], 50, color ='r')

第15步:为图表添加注释;显示结果如下图所示;
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t1,np.sin(t1)), #点的位置
xycoords='data', #注释文字的偏移量
xytext=(+10,+30), #文字离点的横纵距离
textcoords='offset points',
fontsize=14, #注释的大小
arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2")) #箭头指向的弯曲度
plt.annotate(r'$\cos(-\pi)=-1$',
xy=(t2,np.cos(t2)), #点的位置
xycoords='data', #注释文字的偏移量
xytext=(0,-40), #文字离点的横纵距离
textcoords='offset points',
fontsize=14, #注释的大小
arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2")) #箭头指向的弯曲度

第16步:获取x,y轴的刻度,并设置字体;
for label in ax.get_xticklabels()+ax.get_yticklabels(): #获取刻度
label.set_fontsize(18) #设置刻度字体大小

使用".set_bbox"还可以给刻度文本添加边框,如果给全局文本添加边框,可以将此放在循环里,如果对单个刻度文本进行设置,可以放在循环外部;
for label in ax.get_xticklabels()+ax.get_yticklabels(): #获取刻度
label.set_fontsize(18) #设置刻度字体大小 label.set_bbox(dict(facecolor='r',edgecolor='g',alpha=0.5)) #set_bbox为刻度添加边框
#facecolor:背景填充颜色
#edgecolor:边框颜色
#alpha:透明度

第17步:绘制填充区域;
plt.fill_between(X,np.abs(X)<0.5,sin,sin>0.5,color='g',alpha=0.8)
#设置正弦函数的填充区域,颜色为绿色(green),其中的一种方式
plt.fill_between(X,cos,where=(-2.5<X)&(X<-0.5),color='purple')
#设置余弦函数的填充区域,颜色为紫色(purple),另外一种方式

第18步:绘制网格线;
plt.grid()

第19步:保存图表,保存为“COS&SIN.PNG”,dpi设置为300;
plt.savefig("C:\\绘图实例之COS()&SIN().PNG",dpi=300)
绘制完成!!
#!/usr/bin/env python
#!-*-coding:utf-8 -*-
#!@Author : Biyoulin
#!@Time : 2018/9/1 14:17 import matplotlib.pyplot as plt
import numpy as np plt.rcParams['font.sans-serif']=['SimHei'] # 用于正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号 X = np.linspace(-np.pi,np.pi,256,endpoint=True) #获取x坐标 sin,cos = np.sin(X),np.cos(X) #获取y坐标 plt.plot(X,sin,"b-",lw=2.5,label="正弦Sin()") #X:x轴;sin:y轴;b-:color="blue",linestyle="-"的简写;lw:linewidth
plt.plot(X,cos,"r-",lw=2.5,label="余弦Cos()") plt.xlim(X.min()*1.5,X.max()*1.5)
plt.ylim(cos.min()*1.5,cos.max()*1.5) 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]) plt.title("绘图实例之COS()&SIN()",fontsize=16,color="green") plt.text(+2.1,-1.4,"By:biyoulin",fontsize=16,color="purple") ax=plt.gca() #获取Axes对象
ax.spines['right'].set_color('none') #隐藏右边界
ax.spines['top'].set_color('none') #隐藏上边界 ax.xaxis.set_ticks_position('bottom') #x轴坐标刻度设置在坐标轴下面
ax.spines['bottom'].set_position(('data',0)) #x轴坐标轴平移至经过零点(0,0)位置 ax.yaxis.set_ticks_position('left') #y轴坐标刻度设置在坐标轴下面
ax.spines['left'].set_position(('data',0)) #y轴坐标轴平移至经过零点(0,0)位置 plt.legend(loc="upper left",fontsize=12) t1 = 2*np.pi/3 #设定第一个点的x轴值
t2 = -np.pi #设定第二个点的x轴值
plt.plot([t1,t1],[0,np.sin(t1)],color ='b',linewidth=1.5,linestyle="--")
#第一个列表是x轴坐标值,第二个列表是y轴坐标值
#这两个点坐标分别为(t1,0)和(t1,np.sin(t1)),根据两点画直线l1
plt.plot([t2,t2],[0,np.cos(t2)],color ='r',linewidth=1.5,linestyle="--")
#这两个点坐标分别为(t2,0)和(t2,np.cos(t2)),根据两点画直线l2 plt.scatter([t1,],[np.sin(t1),], 50, color ='b')
plt.scatter([t2,],[np.cos(t2),], 50, color ='r') plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t1,np.sin(t1)), #点的位置
xycoords='data', #注释文字的偏移量
xytext=(+10,+30), #文字离点的横纵距离
textcoords='offset points',
fontsize=14, #注释的大小
arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2")) #箭头指向的弯曲度 plt.annotate(r'$\cos(-\pi)=-1$',
xy=(t2,np.cos(t2)), #点的位置
xycoords='data', #注释文字的偏移量
xytext=(0,-40), #文字离点的横纵距离
textcoords='offset points',
fontsize=14, #注释的大小
arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2")) #箭头指向的弯曲度 for label in ax.get_xticklabels()+ax.get_yticklabels(): #获取刻度
label.set_fontsize(18) #设置刻度字体大小 # label.set_bbox(dict(facecolor='r',edgecolor='g',alpha=0.5)) #set_bbox为刻度添加边框
#facecolor:背景填充颜色
#edgecolor:边框颜色
#alpha:透明度
plt.fill_between(X,np.abs(X)<0.5,sin,sin>0.5,color='g',alpha=0.8)
#设置正弦函数的填充区域,其中的一种方式
plt.fill_between(X,cos,where=(-2.5<X)&(X<-0.5),color='purple')
#设置余弦函数的填充区域,另外一种方式 plt.grid() plt.savefig("C:\\绘图实例之COS()&SIN().PNG",dpi=300) plt.show() #显示图表
完整实例代码
参考博文:https://blog.csdn.net/MESSI_JAMES/article/details/80819144
作者:biyoulin
出处:http://www.cnblogs.com/biyoulin/
版权声明:本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
matplotlib 绘图实例01:正弦余弦曲线的更多相关文章
- matplotlib绘图基本用法-转自(http://blog.csdn.net/mao19931004/article/details/51915016)
本文转载自http://blog.csdn.net/mao19931004/article/details/51915016 <!DOCTYPE html PUBLIC "-//W3C ...
- python中利用matplotlib绘图可视化知识归纳
python中利用matplotlib绘图可视化知识归纳: (1)matplotlib图标正常显示中文 import matplotlib.pyplot as plt plt.rcParams['fo ...
- Matplotlib绘图双纵坐标轴设置及控制设置时间格式
双y轴坐标轴图 今天利用matplotlib绘图,想要完成一个双坐标格式的图. fig=plt.figure(figsize=(20,15)) ax1=fig.add_subplot(111) ax1 ...
- python数据分析使用matplotlib绘图
matplotlib绘图 关注公众号"轻松学编程"了解更多. Series和DataFrame都有一个用于生成各类图表的plot方法.默认情况下,它们所生成的是线形图 %matpl ...
- matplotlib 绘图
http://blog.csdn.net/jkhere/article/details/9324823 都打一遍 5 matplotlib-绘制精美的图表 matplotlib 是python最著名的 ...
- python实战学习之matplotlib绘图
matplotlib 是最流行的Python底层绘图库,主要做数据可视化图表 可以将数据可视化,能够更直观的呈现数据 matplotlib绘图基本要点 首先实现一个简单的绘图 # 导入pyplot f ...
- 【原】在Matplotlib绘图中添加Latex风格公式
Matplotlib绘图的过程中,可以为各个轴的Label,图像的Title.Legend等元素添加Latex风格的公式. 只需要在Latex公式的文本前后各增加一个$符号,Matplotlib就可以 ...
- ssh调用matplotlib绘图报错RuntimeError: Invalid DISPLAY variable
1.问题:在本地用matplotlib绘图可以,但是在ssh远程绘图的时候会报错 RuntimeError: Invalid DISPLAY variable 2.原因:matplotlib的默认ba ...
- backbone实例01
backbonejs往简单说,就是一前端MVC框架,适合用于单页面.复杂的前端逻辑. 直接上代码,里面都有相关注释,重点是理解清楚view.collection.model这三者如何关联调用. < ...
随机推荐
- java中InputStream String
Java 中获取输入流时,有时候须要将输入流转成String,以便获取当中的内容 ,以下总结一下 InputStream 转成String 的方式 方法1: public String conver ...
- Xamarin.Android 记事本(二)自定义AlertDialog
导读 1.自定义一个AlertDialog 2.添加一条数据 正文 记事本应当有一个添加功能,这里我打算在右上角放一个item,然后点击这个item弹出一个对话框,输入名称,点击确定跳转到另一个act ...
- Random 类生成随机数
Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...
- JVM对象存活判断方法
一.GC主要针对什么区域 1. 程序计数器.虚拟机栈.本地方法栈,3个部分随线程而生死.每个栈桢分配多少内存基本上是在类结构确定下来时就已确定,大体上可认为是 编译期可知. 2. 而 堆 和 方法区 ...
- #1241 : Best Route in a Grid
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个N行N列的非负整数方阵,从左上角(1,1)出发,只能向下或向右走,且不能到达值为0的方格,求出一条到达右下角的最佳 ...
- DEDE内容页调用栏目的SEO标题、描述、关键字的方法
上篇写了<dedecms栏目页调用栏目关键词.描述的方法>,本章雨田SEOER讲述DEDE内容页调用栏目的SEO标题.描述.关键字的方法内容页调用SEO标题:在<title>& ...
- MySQL数据库设计常犯的错以及对性能的影响
1.过分的反范式化为表建立太多的列 我们在设计数据库的结构时,比较容易犯的第一个错误就是对表进行了过分的反范式化的设计,这就容易造成了表中的列过多,虽然说Mysql允许为一个表建立很多的列,但是由于M ...
- codeforces 447C. DZY Loves Sequences 解题报告(446A)
题目链接:http://codeforces.com/problemset/problem/447/C 题目意思:给出 一个 包含 n 个数的序列你,从中需要找出这个序列的最长子串,满足在里面只修改其 ...
- poj 2406 Power Strings(kmp求一个串的重复子串)
题意:重复子串次数 思路:kmp #include<iostream> #include<stdio.h> #include<string.h> using nam ...
- cassandra cpp driver中bind list——用cass_statement_bind_collection函数
CassError insert_into_collections(CassSession* session, const char* key, const char* items[]) { Cass ...