关于matplotlib中一些常见的函数,https://www.cnblogs.com/TensorSense/p/6802280.html这篇文章讲的比较清楚了,https://blog.csdn.net/ouyangjianxiu/article/details/76299171这个也讲的不错

plot函数

plt.plot(x, y, format_string, **kwargs): x为x轴数据,可为列表或数组;y同理;format_string 为控制曲线的格式字符串, **kwargs 第二组或更多的(x, y, format_string)

format_string: 由 颜色字符、风格字符和标记字符组成。

颜色字符:‘b’蓝色  ;‘#008000’RGB某颜色;‘0.8’灰度值字符串

风格字符:‘-’实线;‘--’破折线; ‘-.’点划线; ‘:’虚线 ; ‘’‘’无线条

标记字符:‘.’点标记  ‘o’ 实心圈 ‘v’倒三角  ‘^’上三角

eg: plt.plot(a, a*1.5, ‘go-’,    a, a*2, ‘*’)   第二条无曲线,只有点

plot 显示中文字符

pyplot并不默认支持中文显示,需要rcParams修改字体来实现

rcParams的属性:

‘font.family’ 用于显示字体的名字

‘font.style’ 字体风格,正常’normal’ 或斜体’italic’

‘font.size’ 字体大小,整数字号或者’large’   ‘x-small’

eg:

import matplotlib

matplotlib.rcParams[‘font.family’] = ‘STSong’

matplotlib.rcParams[‘font.size’] = 20

设定绘制区域的全部字体变成 华文仿宋,字体大小为20

中文显示2:只希望在某地方绘制中文字符,不改变别的地方的字体

在有中文输出的地方,增加一个属性: fontproperties

eg:

plt.xlabel(‘横轴:时间’, fontproperties = ‘simHei’, fontsize = 20)

pyplot文本显示函数:

plt.xlabel():对x轴增加文本标签

plt.ylabel():同理

plt.title(): 对图形整体增加文本标签

plt.text(): 在任意位置增加文本

plt. annotate(s, xy = arrow_crd, xytext = text_crd, arrowprops = dict)

: 在图形中增加带箭头的注解。s表示要注解的字符串是什么,xy对应箭头所在的位置,xytext对应文本所在位置,arrowprops定义显示的属性

eg:

plt.xlabel(‘横轴:时间’, fontproperties = ‘SimHei’, fontsize = 15, color = ‘green’)

plt.ylabel(‘纵轴:振幅’, fontproperties = ‘SimHei’, fontsize = 15)

plt.title(r’正弦波实例 $y=cons(2\pi x)$’ , fontproperties = ‘SimHei’, fontsize = 25)

plt.annotate (r’%mu=100$, xy = (2, 1), xytext = (3, 1.5),

arrowprops = dict(facecolor = ‘black’, shrink = 0.1, width = 2)) # width表示箭头宽度

plt.text (2, 1, r’$\mu=100$, fontsize = 15)

plt.grid(True)

plt. annotate(s, xy = arrow_crd, xytext = text_crd, arrowprops = dict)

Plot的图表函数

plt.plot(x,y , fmt)  :绘制坐标图

plt.boxplot(data, notch, position): 绘制箱形图

plt.bar(left, height, width, bottom) : 绘制条形图

plt.barh(width, bottom, left, height) : 绘制横向条形图

plt.polar(theta, r) : 绘制极坐标图

plt.pie(data, explode) : 绘制饼图

plt.scatter(x, y) :绘制散点图

plt.hist(x, bings, normed) : 绘制直方图

example:

# matplolib画正弦函数
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
zhfont1 = fm.FontProperties(fname='C:\Windows\Fonts\simkai.ttf')
x = np.linspace(0,10,100)
plt.plot(x,np.sin(x))
plt.title('正弦函数',fontproperties=zhfont1) # 增加参数fontproperties来限定显示的字体, 用此来解决中文显示
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.show()

# matplotlib画一元n次方程 我们来画一个  f(x)=x^{3}+2x^{2}+3x+4 函数的图形
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
zhfont1 = fm.FontProperties(fname='C:\Windows\Fonts\simkai.ttf')
func = np.poly1d(np.array([1,2,3,4])) # 生成指定的多项式 1,2,3,4是系数 相当于f(x) = 1*x**4 + 2*x**3 + x**3 + 4*x**4
x = np.linspace(-10,10,30)
y = func(x)
plt.plot(x,y)
plt.xlabel('x')
plt.ylabel('y=f(x)')
plt.show()

# matplotlib画多个曲线,我们绘制 f(x)=x^{3}+2x^{2}+3x+4 的同时,再绘制其一阶导函数 f^{'}(x)的图像
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# zhfont1 = fm.FontProperties(fname='C:\Windows\Fonts\simkai.ttf')
matplotlib.rcParams['font.family'] = 'SimHei' # 用来正常显示中文标签
matplotlib.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.figure(1)
func = np.poly1d(np.array([1,2,3,4]))
func1 = func.deriv(1) # 得到func的一阶导函数
func2 = func.integ() # 得到func的一阶积分函数
x = np.linspace(-10,10,30)
y = func(x)
y1 = func1(x)
y2 = func2(x)
# 在一幅图上画三条曲线
plt.plot(x,y,color='r',label='函数f(x)') # 红色实线
plt.plot(x,y1,'g--',label="函数f'(x)") # 绿色虚线
plt.plot(x,y2,'b-.',label="函数f^2(x)") # 蓝色点划线
plt.legend() # 设置图例和其中的文本的显示
plt.show() # 显示图片

# matplotlib画多个曲线,我们绘制 f(x)=x^{3}+2x^{2}+3x+4 的同时,再绘制其一阶导函数 f^{'}(x)的图像
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# zhfont1 = fm.FontProperties(fname='C:\Windows\Fonts\simkai.ttf')
matplotlib.rcParams['font.family'] = 'SimHei' # 用来正常显示中文标签
matplotlib.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.figure(1)
func = np.poly1d(np.array([1,2,3,4]))
func1 = func.deriv(1) # 得到func的一阶导函数
func2 = func.integ() # 得到func的一阶积分函数
x = np.linspace(-10,10,30)
y = func(x)
y1 = func1(x)
y2 = func2(x)
# 在一幅图上画三条曲线
# plt.plot(x,y,color='r',label='函数f(x)') # 红色实线
# plt.plot(x,y1,'g--',label="函数f'(x)") # 绿色虚线
# plt.plot(x,y2,'b-.',label="函数f^2(x)") # 蓝色点划线
# plt.legend() # 设置图例和其中的文本的显示
# plt.show() # 显示图片 # 用子图分别画图
plt.subplot(311)
plt.plot(x,y,'r')
plt.title('f(x)') plt.subplot(312)
plt.plot(x,y1,'g')
plt.title('f(x)的一阶导函数') plt.subplot(313)
plt.plot(x,y2,'b')
plt.title('f(x)的一阶积分函数') plt.show()

画散点图

import numpy as np
import matplotlib.pyplot as plt x = np.linspace(0, 10, 100)
plt.scatter(x, np.sin(x), marker='o') # marker 点的形状
plt.grid()
plt.show()

使用plt.sactter相比plt.plot在创建散点图时的优势是具有更高的灵活性,他可以单独控制每一个散点的不同属性(颜色、大小等),这样就可以通过(坐标位置、颜色、大小)这些多维信息,来表征更多的数据特征,
并进行更精细的控制。 我们来绘制这样一组散点图,每个点的位置坐标(x,y)是服从标准正态分布的随机值,点的颜色灰度值是位于(0,1)空间中的随机样本,点的大小是随机值得1000倍,单位是像素。
这样通过位置、大小、颜色等多维信息,就能更丰富的表现出散点数据背后所蕴含的多重信息了。
import numpy as np
import matplotlib.pyplot as plt rng = np.random.RandomState(0)
x = rng.randn(100)
y = rng.randn(100)
colors = rng.rand(100)
sizes = 1000*rng.rand(100)
plt.scatter(x,y,c=colors,s=sizes,alpha=0.3) # c 点的颜色 s 点的大小 alpha 点的透明度
plt.colorbar()
plt.grid(True)
plt.show()

画直方图

用bar

from matplotlib import pyplot as plt
import numpy as np #这节课,我们学习如何通过matplotlib绘制简单条形图
#第一步,取出一张白纸
fig=plt.figure(1) #第二步,确定绘图范围,由于只需要画一张图,所以我们将整张白纸作为绘图的范围
ax1=plt.subplot(111) #第三步,整理我们准备绘制的数据
data=np.array([15,20,18,25]) #第四步,准备绘制条形图,思考绘制条形图需要确定那些要素
#1、绘制的条形宽度
#2、绘制的条形位置(中心)
#3、条形图的高度(数据值)
width=0.5
x_bar=np.arange(4) #第五步,绘制条形图的主体,条形图实质上就是一系列的矩形元素,我们通过plt.bar函数来绘制条形图
rect=ax1.bar(left=x_bar,height=data,width=width,color="lightblue") #第六步,向各条形上添加数据标签
for rec in rect:
x=rec.get_x()
height=rec.get_height()
ax1.text(x+0.1,1.02*height,str(height)) #第七步,绘制x,y坐标轴刻度及标签,标题
ax1.set_xticks(x_bar)
ax1.set_xticklabels(("first","second","third","fourth"))
ax1.set_ylabel("sales")
ax1.set_title("The Sales in 2016")
ax1.grid(True)
ax1.set_ylim(0,28)
plt.show()

hist函数

   matplotlib.pyplot.hist(
x, bins=10, range=None, normed=False,
weights=None, cumulative=False, bottom=None,
histtype=u'bar', align=u'mid', orientation=u'vertical',
rwidth=None, log=False, color=None, label=None, stacked=False,
hold=None, **kwargs)

x : (n,) array or sequence of (n,) arrays

这个参数是指定每个bin(箱子)分布的数据,对应x轴

bins : integer or array_like, optional

这个参数指定bin(箱子)的个数,也就是总共有几条条状图

normed : boolean, optional

If True, the first element of the return tuple will be the counts normalized to form a probability density, i.e.,n/(len(x)`dbin)

这个参数指定密度,也就是每个条状图的占比例比,默认为1

color : color or array_like of colors or None, optional

这个指定条状图的颜色

我们先画一个最简单的频次直方图,生成1000个服从标准正态分布的随机变量,然后观察他们在每个点的出现次数

import numpy as np
import matplotlib.pyplot as plt
data = np.random.randn(1000)
# print(data)
ret = plt.hist(data)
print(ret)
plt.show()
(array([  15.,   39.,   88.,  188.,  216.,  200.,  123.,   84.,   36.,   11.]),
array([-2.68292233, -2.1248507 , -1.56677908, -1.00870746, -0.45063583,
0.10743579, 0.66550742, 1.22357904, 1.78165067, 2.33972229,
2.89779391]), <a list of 10 Patch objects>)
 

我们可以从程序结果看出,hist函数是有返回值的,返回的是一个2元元组,元组第一个ndarray对象是数据条的高度序列,元组第二个ndarray对象是每个数据条的边缘横坐标。

这个图里面只有10个数据条,但是很显然1000个随机变量的取值显然不止10个。在默认情况下,hist函数会将所有的随机变量取值划分为10个取值范围,然后统计每个取值范围内的变量数,

并绘就此图。

另外我们可以通过指定hist函数中的一些参数,来个性化的调整频次直方图的显示效果。

通过bins参数可以指定数据条的个数;normed可以指定是否将频数进行标准化,alpha指定透明度;还有histtype、color、edgecolor等线性、颜色等参数

import numpy as np
import matplotlib.pyplot as plt data = np.random.randn(1000)
plt.hist(data, bins=40, normed=True, alpha=0.5,
histtype='stepfilled',color='steelblue')
plt.grid(True)
plt.show()

bings将直方图的取值范围进行均等划分bings个区间;

normed =1 表示将出现频次进行了归一化。 normed=0,则为频次;

alpha表示直方图的透明度[0, 1] ;

histtype = ‘stepfilled’  表示去除条柱的黑色边框

结合频次直方图中的透明度这个参数,我们再来多做做文章,比如,我们想对不同均值、方差分布特征的正态分布随机变量进行对比,那该怎么做?显然我们想到的是把不同的几个正态分布图画在一张图里进行比较。

import numpy as np
import matplotlib.pyplot as plt data1 = np.random.normal(0, 0.8, 1000)
data2 = np.random.normal(-2, 1, 1000)
data3 = np.random.normal(3, 2, 1000)
plt.grid(True)
kwargs = dict(histtype='stepfilled', alpha=0.5, normed=True, bins=40)
plt.hist(data1, **kwargs)
plt.hist(data2, **kwargs)
plt.hist(data3, **kwargs)
plt.show()

基本误差线图

我们在图上画50个散点,然后每个点的误差设定为一个随机值,满足标准正态分布。同时作为对照,我们在另一个图中设置每个点的误差值为一个标量常数而非随机数组。当然这个例子可能没有什么物理意义,只是来演示一下这种图怎么画

import numpy as np
import matplotlib.pyplot as plt x = np.linspace(0, 10, 50)
dy = np.random.normal(0, 1, 50)
y = np.sin(x) + dy*np.random.randn(50)
plt.subplot(211)
plt.errorbar(x, y, yerr=dy, fmt='.k')
plt.grid(True)
plt.subplot(212)
plt.errorbar(x, y, yerr=0.8, fmt='o')
plt.grid(True)
plt.show()

matplotlib模块之plot画图的更多相关文章

  1. numpy模块、matplotlib模块、pandas模块

    目录 1. numpy模块 2. matplotlib模块 3. pandas模块 1. numpy模块 numpy模块的作用 用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学计算 实 ...

  2. windows下python安装Numpy、Scipy、matplotlib模块(转载)

    python下载链接     Numpy下载链接 python中Numpy包的安装及使用 Numpy包的安装 准备工作 Python安装 pip安装 将pip所在的文件夹添加到环境变量path路径中 ...

  3. 11-2 numpy/pandas/matplotlib模块

    目录 numpy模块 一维数组 二维数组 列表list和numpy的区别 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的合并 通过函数方法创建多维数组 矩阵的运算 求最大值最小值 nump ...

  4. 【转】Pandas学习笔记(七)plot画图

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  5. 模块讲解---numpymo模块,matplotlib模块,pandas模块

    目录 numpy模块 matplotlib模块 pandas模块 numpy模块 numpy模块:用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学运算 在使用的时候,使用方法与其他的模 ...

  6. Matplotlib模块:绘图和可视化

    一.简单介绍Matplotlib 1.Matplotlib是一个强大的Python绘图和数据可视化的工具包 2.安装方法:pip install matplotlib 3.引用方法:import ma ...

  7. 关于plot画图的原理

    首先是导入的: Import matplotlib.pyplot as plt 这份导入要背住,没事就是需要你进行导入的: 然后就是画图了,下面举一个例子: import numpy as np im ...

  8. 为python安装matplotlib模块

    matplotlib是python中强大的画图模块. 首先确保已经安装python,然后用pip来安装matplotlib模块. 进入到cmd窗口下,执行python -m pip install - ...

  9. Python使用matplotlib模块绘制多条折线图、散点图

    用matplotlib模块 #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:折线图.散点图测试 ''' import rando ...

随机推荐

  1. python 类成员的修饰符

    类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的定义不同:私有成员命名时,前两个字 ...

  2. tonymillion/Reachability的使用

    tonymillion/Reachability是GitHub上的一个开源工具类,目測是依据Apple的Reachability Demo改写而成. 该类能够測试到某一网络.主机等的可达性,支持Blo ...

  3. 项模板选择器属性(ItemTemplateSelector属性)和样式选择器(ItemContainerStyleSelector)

    3.4.5 共享尺寸组 样式选择器: 或者========================================

  4. python使用电子邮件模块smtplib的方法(发送图片 附件)实用可行

    Smptp类定义:smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接,在连接成功后,就可 ...

  5. 6、easyUI-拖放事件及应用

    一.EasyUI 基本的拖动和放置 直接代码看: <!doctype html> <html> <head> <meta http-equiv="C ...

  6. 关于java后台如何接收xml格式的数据

    业务场景:用户发送下单请求,格式为xml格式,服务器接收数据完成下单,并返回结果给客户. 请求格式: <request> <head> <sign></sig ...

  7. vfptr(1)

    前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的指针有“多种形态”,这是一种泛 ...

  8. Cocos2d-x Lua中实例:特效演示

    下面我们通过一个实例介绍几个特效的使用,这个实例如下图所示,上图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜 ...

  9. 内网网络摄像机(RTSP/IPC/NVR)如何能在公网进行RTMP/HLS/HTTP-FLV直播

    一.背景需求 传统监控行业里不管是设备端.服务器端亦或是客户端都在一个内网里面.而且现在的大部分监控方案都是这样的格局,小到一个公司范围内的监控,再到一个园区.一个仓库监控.一个农业园林监控.一个养殖 ...

  10. 导出网页中的table到excel

    导出网页中的table到excel的两种简便方法: 1. 纯 JavaScript 方法,缺点只支持IE浏览器 var elTable = document.getElementById(" ...