个人理解:plt--画本    figure--产生画纸

子图

import numpy as np
import matplotlib.pyplot as plt #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 plt.title("图标题",fontsize=24) #图的标题
plt.xlabel("x轴标题")
plt.ylabel("y轴标题") x=np.arange(0,10,1)
fig=plt.figure() #定义一个图纸

#figsize=(4,4) 设置窗口大小 参数是个元组,单位:英寸
#facecol)or='#FF0000':可选参数,表示窗口的背景颜色,如果没有提供则默认为figure.facecolor
#edgecolor:可选参数,表示窗口的边框颜色,如果没有提供则默认为figure,edgecolor ??
#frameon:可选参数,表示是否绘制窗口的图框,默认是 ???
#clear=True:可选参数 清除画纸的内容 ??
#dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张



ax1 = fig.add_subplot(2,2,1) #添加子图
#将画布分割成2行2列,图像画在第1块

ax1.plot(x,x) #在指定子图上画图
ax2 = fig.add_subplot(2,2,2) #添加子图
ax2.plot(x,-x) plt.show()

效果

画多个图:

import numpy as np
import matplotlib.pyplot as plt #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 x=np.arange(0,10,1)
fig=plt.figure() #定义第一个图纸
ax1 = fig.add_subplot(1,1,1)
ax1.plot(x,x) fig2=plt.figure() #定义第二个图纸
ax2 = fig2.add_subplot(1,1,1)
ax2.plot(x,-x) plt.show()

画网格:

方法一:plt法

import numpy as np
import matplotlib.pyplot as plt #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 x=np.linspace(-10,10,10)
y=x**2
plt.plot(x,y,linestyle=':',color='red',marker='o') #画直线
plt.grid(b=True,color='r',linewidth='2',linestyle=':',axis='both') #画出网格
#参数b 是否画出网格;默认False,不画网格
#color 网格线颜色
#linewidth 网格线粗细
#linestyle 网格线的样式:虚线
#axis 设置哪个方向画出网格线,选项有:x、y、both(xy都画)
plt.show()

对象法:

import numpy as np
import matplotlib.pyplot as plt #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 x=np.linspace(-10,10,10)
y=x**2 fig=plt.figure() #定义一个画纸
ax=fig.add_subplot(1,1,1)
ax.plot(x,y,linestyle=':',color='red',marker='o') ax.grid(b=True,color='r',linewidth='',linestyle=':',axis='both') #画出网格
#参数b 是否画出网格;默认False,不画网格
#color 网格线颜色
#linewidth 网格线粗细
#linestyle 网格线的样式:虚线
#axis 设置哪个方向画出网格线,选项有:x、y、both(xy都画) plt.show()

图例:

import numpy as np
import matplotlib.pyplot as plt #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 x=np.linspace(0,10,10)
y=x**2 fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(x,y,linestyle=':',marker='o',color='r',label='1图')
ax.plot(x,x,color='b',label='2图')
ax.plot(x,-x,color='y',label='3图')
ax.legend(loc=0,ncol=3) #画出图例
# loc: 表示位置,包括'upper right','upper left','lower right','lower left'等
# bbox_to_anchor: 表示legend距离图形之间的距离,当出现图形与legend重叠时,可使用bbox_to_anchor进行调整legend的位置
# 由两个参数决定,第一个参数为legend距离左边的距离,第二个参数为距离下面的距离
#'upper right'=1;'upper left'=2;'lower left'=3;'lower right'=4; 0 自适应找位置
#ncol 图例的列数

plt.show()

坐标轴:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import datetime #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 x=np.linspace(1,10,10)
y=x**2 fig=plt.figure()
ax=fig.add_subplot(2,1,1)
ax.plot(x,y,linestyle=':',marker='o',color='r')
bx=plt.gca() #获取当前坐标轴
bx.locator_params(nbins=10) #设置x和y坐标轴分成n个格
#bx.locator_params('x',nbins=10) #设置x坐标轴分成n个格
# bx.locator_params('y',nbins=10) #设置y坐标轴分成n个格
bx.axis([0,5,0,20]) #设置x轴和y轴的坐标范围
#参数1 参数2 x轴坐标范围
#参数3 参数4 y轴坐标范围 ax.set_xlim(1,10) #设置x坐标轴范围
ax.set_ylim(1,50) #设置y坐标轴范围 #设置坐标显示范围和刻度【不知如何交互】
my_x_ticks = np.arange(0, 11, 1)
#参数1 参数2 显示的坐标范围 参数3 刻度间距
#顾头不顾尾
my_y_ticks = np.arange(0, 51, 4)
dx=plt.xticks(my_x_ticks)
dy=plt.yticks(my_y_ticks) ax1=fig.add_subplot(2,1,2) #处理日期数据
start=datetime.datetime(2015,1,1)
stop=datetime.datetime(2015,1,11)
delta=datetime.timedelta(days=1) #时间间隔为1天
#delta = datetime.timedelta(microseconds=500000) # 0.5秒为间隔
dates=mpl.dates.drange(start,stop,delta) #以指定的间隔产生序列
date_format=mpl.dates.DateFormatter('%m-%d') #格式
ax1.xaxis.set_major_formatter(date_format) #设置x轴的数据格式 ax1.plot_date(dates,x) #画包含日期数据的点或直线
fig.autofmt_xdate() #画纸x轴数据自适应 ax1.twinx() #添加一个y坐标轴
ax1.twiny() #添加一个x坐标轴 plt.show()

画注释:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import datetime #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 fig=plt.figure() #定义第一个图纸
x=np.arange(-10,11,1)
y=x**2
ax = fig.add_subplot(1,1,1)
ax.plot(x,y)
ax.annotate('这是底部',xy=(0,1),xytext=(0,20),arrowprops=dict(facecolor='y',shrink=0.08,frac=0.1,headwidth=10,width=5)) #画注释
#箭头是从xytext的坐标画到xy的坐标
#参数1 注释文字 #参数2 xy 箭头的坐标 #参数3 xytext 注释文字的起始坐标
#facecolor='y' 设置颜色
#shrink=0.08 <1 箭头收缩比,离文字的距离
#frac=0.1 箭头头部所占据的比例 ?????
#headwidth=10 箭头头部的宽度,以点为单位
#width=5 箭身宽度 plt.show()

还有高级注释,请看 https://blog.csdn.net/wizardforcel/article/details/54782628

文字:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import datetime #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 fig=plt.figure() #定义第一个图纸
x=np.arange(-10,11,1)
y=x**2
ax = fig.add_subplot(1,1,1)
ax.plot(x,y)
ax.text(5,20,'文字注释',family='SimHei',size=25,verticalalignment="top",horizontalalignment="right",color='r',style='italic') #文字
#参数1 参数2 坐标
#参数3 文本
#size:表示字体大小
#verticalalignment:垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
#horizontalalignment:水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]
#字体
#color 文字颜色 ax.text(5,60,'文字注释',size=25,weight='bold',alpha = 0.9,style = "oblique",bbox = dict(facecolor = "b", alpha = 0.2))
#style = "italic" 斜体 ???
## alpha 设置字体的透明度
# bbox 给字体添加框,alpha 设置框体的透明度, facecolor 设置框体的颜色
#weight=0.5 (0-1000) 粗细 ??? plt.show()

画数学公式:

官网资料:https://matplotlib.org/users/mathtext.html

视频教程 

$作为开始和结束

符号的表示:

小写希腊字母:

大写希腊字母:

Delimiters:

大符号:

标准函数名:

等等

ax.text(2,4,r'$\alpha_i \beta_j \pi \lambda \omega $',size=25)   #画公式
# 参数1 参数2 坐标
# r 不转义
# _ 下标 效果:

ax.text(4,4,r'$sin(0)=cos(\frac{π}{2}) $',size=15)
# \frac{}{} 分号:第一个大括号里的内容是分子,第二个大括号里的内容是分母

效果:

ax.text(2,2,r'$\lim_{x \rightarrow y} \frac{1}{x^3} $',size=15)
# \lim 极限符号

效果:

ax.text(4,2,r'$\sqrt[4]{x} =\sqrt[2]{y}$',size=15)
# \sqrt[3]{x} 开根号

效果:

ax.text(4,2,r'$\sqrt[4]{x} =\sqrt{y}$',size=15)

开平方时 平方可以省略  



天子骄龙  生命诚可贵  时光价更高

matplotlib-2D绘图库-面向对象的更多相关文章

  1. Python开发环境Wing IDE使用教程之matplotlib 2D绘图库代码调试技巧

    Wing IDE是一个集成开发环境,可用于加快matplotlib2D图形库的Python代码的编写和调试进程.Wing IDE提供自动完成.调用提示.调试器,以及许多其他功能,可帮助用户编写.浏览和 ...

  2. Python第三方库matplotlib(2D绘图库)入门与进阶

    Matplotlib 一 简介: 二 相关文档: 三 入门与进阶案例 1- 简单图形绘制 2- figure的简单使用 3- 设置坐标轴 4- 设置legend图例 5- 添加注解和绘制点以及在图形上 ...

  3. 如何设置让基于matplotlib的绘图库正常的显示no-ascii字符(中文字符)

    添加一句: import matplotlib matplotlib.rc('font', family='simhei') 其中family直接指示字体名字就行,比如simhei 注意:如果不能正常 ...

  4. Python 绘图库Matplotlib入门教程

    0 简单介绍 Matplotlib是一个Python语言的2D绘图库,它支持各种平台,并且功能强大,能够轻易绘制出各种专业的图像. 1 安装 pip install matplotlib 2 入门代码 ...

  5. Python图表绘制:matplotlib绘图库入门

    matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并 ...

  6. Python图表绘制:matplotlib绘图库入门(转)

    matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并 ...

  7. matplotlib python高级绘图库 一周总结

    matplotlib python高级绘图库 一周总结 官网 http://matplotlib.org/ 是一个python科学作图库,可以快速的生成很多非常专业的图表. 只要你掌握要领,画图将变得 ...

  8. 数据可视化:绘图库-Matplotlib

    为什么要绘图? 一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据: 数据: 这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下: import random co ...

  9. Matplotlib Toolkits:python高级绘图库seaborn

    http://blog.csdn.net/pipisorry/article/details/49515745 Seaborn介绍 seaborn (Not distributed with matp ...

随机推荐

  1. 微信小程序框架——wepy使后感

    更新:2018年1月10日15:32:22 在ios8及部分机型下会有样式混乱的问题,经查找,原因是缺少浏览器前缀,需要加prefix. 解决方案见链接:wepy-less-autoprefix 另外 ...

  2. 洛谷P1896 互不侵犯

    又是一道状压DP求方案数的题... 多了一个放k个的限制,于是我们把数组多开一维. f[i][j][k]表示前i行放了j个,第i行状态为k的方案数. 然后老套路DFS转移,这次要多记录一个cnt表示上 ...

  3. (转)c++ 回调函数

    https://www.cnblogs.com/chenyuming507950417/archive/2012/01/02/2310114.html 今天讨论下C/C++中的回调函数. 在理解“回调 ...

  4. MySQL填充字符串函数 LPAD(str,len,padstr),RPAD(str,len,padstr)

    转: MySQL填充字符串函数 LPAD(str,len,padstr),RPAD(str,len,padstr) LPAD(str,len,padstr) 用字符串 padstr对 str进行左边填 ...

  5. TestNg 10. 多线程测试-xml文件实现

    代码如下: package com.course.testng.multiThread; import org.testng.annotations.Test; public class MultiT ...

  6. unsigned 变量名:n

    在结构体内定义位,节省空间 /* * size是字节数 * addr是打印的起始地址 */ static void printb(void * addr,size_t size){ ;i<siz ...

  7. 前端模块化,AMD与CMD的区别

    最近在研究cmd和amd,在网上看到一篇不错的文章,整理下看看. 在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可:如今CPU.浏览器性能得到了极大的提升,很多页面逻辑迁移到 ...

  8. ES6优缺点

    看了一篇ES6语法示例,觉得还可以 here ES6是新一版的标准,对语言有扩展,添加了新的属性与方法.这一标准虽然现在还要用babel来做浏览器支持(将ES6编译成ES5才能被浏览器支持),但是未来 ...

  9. JS学习笔记Day3

    一.什么是循环结构 满足一定条件,(((重复)))执行一段相同的代码 二.循环思想是什么(循环三要素) 开始 结束 步长(步进) 三.可以实现循环语句的有哪些 while do while for 四 ...

  10. ES6(promise)_解决回调地狱初体验

    一.前言 通过这个例子对promise解决回调地狱问题有一个初步理解. 二.主要内容 1.回调地狱:如下图所示,一个回调函数里面嵌套一个回调函数,这样的代码可读性较低也比较恶心 2.下面用一个简单的例 ...