利用matplotlib的plot函数实现图像绘制
模式识别的一个实验,要求画出贝叶斯决策的图。这里我是利用python中的matplotlib库实现的图线的拟合。主要对于matplotlib的使用可以参照博客:webary
如果要绘制三维图像可以参考博客:python绘制三维图
具体实现:
接下来,就是对具体数据进行绘图了。比如我们要绘制一条y=x^2的曲线,可这样写代码:
x = range() # 横轴的数据
y = [i*i for i in x] # 纵轴的数据
pl.plot(x, y) # 调用pylab的plot函数绘制曲线
pl.show() # 显示绘制出的图
可以看到,要显示一个图非常简单,只要有了两个list作为输入数据,先后调用plot和show函数就可以了。一定要记得只有调用了show之后才会显示出来!只有plot是不行的!在实际运用中,可能这样一条简单粗暴的线可能并不是我们想要的最好的结果,比如,想要在图形上显示原始数据点,很简单,只要在plot函数中加上一个参数即可: pl.plot(x, y,'ob-') # 显示数据点,并用蓝色(blue)实现绘制该图形
这个参数用法比较灵活,可以从下面的值中组合选择:
颜色(color 简写为 c):
蓝色: 'b' (blue)
绿色: 'g' (green)
红色: 'r' (red)
蓝绿色(墨绿色): 'c' (cyan)
红紫色(洋红): 'm' (magenta)
黄色: 'y' (yellow)
黑色: 'k' (black)
白色: 'w' (white) 线型(linestyle 简写为 ls):
实线: '-'
虚线: '--'
虚点线: '-.'
点线: ':'
点: '.' 点型(标记marker):
像素: ','
圆形: 'o'
上三角: '^'
下三角: 'v'
左三角: '<'
右三角: '>'
方形: 's'
加号: '+'
叉形: 'x'
棱形: 'D'
细棱形: 'd'
三脚架朝下: ''(像'丫')
三脚架朝上: ''
三脚架朝左: ''
三脚架朝右: ''
六角形: 'h'
旋转六角形: 'H'
五角形: 'p'
垂直线: '|'
水平线: '_'
线是调好了,可是还想加上横纵坐标的说明呢?也很简单,在调用show函数之前添加如下代码:
pl.xlabel(u"我是横轴")
pl.ylabel(u"我是纵轴")
这里一定要记住,传递的字符串一定要是Unicode编码,如果是直接传入字符串,形式如 u'这里是要写的字符串' 即可。
现在就直观多了吧,终于像一个正常的图了,不过,还想再在图里加个图例该咋办?也不难,继续给plot传参数:
pl.plot(x, y, 'ob-', label=u'y=x^2曲线图') # 加上label参数添加图例
pl.legend() # 让图例生效
oh,看到图像上面光秃秃的,就好想给它加个标题: pl.title(u'图像标题') # 字符串也需要是unicode编码 有时候,我们的数据可能分布并没有这么集中,比如我们想要对项目中的某些数据进行绘图观察时发现,大量数据聚集在0附近,而少量很大的数据会导致图像显示效果很不好,比如:
x = range(10)+[100]
y = [i*i for i in x]
pl.plot(x, y, 'ob-', label=u'y=x^2曲线图')
这时,我们想要限制需要显示的坐标范围:
pl.xlim(-1, 11) # 限定横轴的范围
pl.ylim(-1, 110) # 限定纵轴的范围
这里是我实验的实现部分:
# -*- 环境:python 3 -*-
# -*- 代码于https://www.cnblogs.com/doggod/p/9917638.html -*-
import cmath
lis = [-3.9847,-3.5549,-1.2401,-0.9780,-0.7932,-2.8531,-2.7605,-3.7287,-3.5414,-2.2692,-3.4549,-3.0752,-3.9934,2.8792,-0.9780,0.7932,1.1882,3.0682,-1.5799,-1.4885,-0.7431,-0.4221,-1.1186,4.2532]
pw1=0.9;pw2=0.1;e1=-2.0;a1=0.5;e2=2.0;a2=2.0 #定义所给的常数
def func(x,a,b): #求正态分布的函数
return ( 1.0/(cmath.sqrt(2.0*(cmath.pi.real)).real)*b*(cmath.exp(-1.0*(x-a)*(x-a)/2.0/b/b).real));
point1 = [];pot1 = [] #为后面作图所画点集的list/正常点
point2 = [];pot2 = [] #为后面作图所画点集的list/异常点
for t in lis: #遍历所给细胞,判断所给的细胞是否是异常细胞
p1 = (pw1 * func(t, e1, a1)) / (pw1 * func(t, e1, a1) + pw2 * func(t, e2, a2))
p2 = (pw2 * func(t, e2, a2)) / (pw1 * func(t, e1, a1) + pw2 * func(t, e2, a2))
if(p1>=p2):
print(0,' ',end='')
point1.append(t)
pot1.append(0);
else:
print(1,' ',end='')
point2.append(t)
pot2.append(0); import matplotlib.pyplot as plt #引入matplotlib与numpy - python画图工具
import numpy as np
plt.figure('拟合图像') #定义名字
x1=[];y1=[] #存储后面linspace函数所产生点的list为拟合图像做准备
x2=[];y2=[]
a=np.linspace(-5,8,100) #产生均匀点
for i in a:
x1.append(i)
y1.append((pw1 * func(i, e1, a1)) / (pw1 * func(i, e1, a1) + pw2 * func(i, e2, a2))) #计算所给i的后验概率
x2.append(i)
y2.append((pw2 * func(i, e2, a2)) / (pw1 * func(i, e1, a1) + pw2 * func(i, e2, a2))) plt.plot(x1,y1,label= u'normal cell' ) #画出正常点的线
plt.plot(x2,y2,label= u'abnormal cell' ) #画出异常点的线
plt.xlabel(u"Cell attribute value") #为x轴取名
plt.ylabel(u"Post continuation probability") #为y轴取名 plt.plot(point1,pot1,'gp') #画出点集
plt.plot(point2,pot2,'mx')
plt.legend() #显示图例
plt.show()
实现结果如图所示:

利用matplotlib的plot函数实现图像绘制的更多相关文章
- 利用matplotlib中imshow()函数绘图
matplotlib 是Python最著名的2D绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.通过简单的绘图 ...
- python 利用matplotlib中imshow()函数绘图
matplotlib 是python最著名的2D绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.通过简单的绘图语 ...
- 利用数学软件Mathematica的三维图像进行建模
前言 最近在使用Mathematica进行二元函数的图像绘制,在导出图像选项中看到了obj,maya等三维格式.其实很早之前我就有过这样的想法,但之前使用的是matlab作图,无法导出三维格式.那么废 ...
- Matlab中plot函数参数解析
功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1,...) plot(X1,Y1,LineSpec,...) plot(...,'PropertyName',PropertyValue, ...
- 【原创】Matlab中plot函数全功能解析
[原创]Matlab中plot函数全功能解析 该帖由Matlab技术论(http://www.matlabsky.com)坛原创,更多精彩内容参见http://www.matlabsky.com 功能 ...
- Matlab中plot函数全功能解析
Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName ...
- Python的工具包[2] -> matplotlib图像绘制 -> matplotlib 库及使用总结
matplotlib图像绘制 / matplotlib image description 目录 关于matplotlib matplotlib库 补充内容 Figure和AxesSubplot的生 ...
- python中利用matplotlib绘图可视化知识归纳
python中利用matplotlib绘图可视化知识归纳: (1)matplotlib图标正常显示中文 import matplotlib.pyplot as plt plt.rcParams['fo ...
- R可视化:plot函数基础操作,小白教程
最近迷恋上了画图,一方面是觉得挺有意思的,另一方面是觉得自己确实画图方面比较弱,所以决定比较系统地回顾反思一下,同时顺带记录下来分享给大家.也确实是好久好久没更新文章了,真的是杂事太多太忙太牵扯精力没 ...
随机推荐
- Android FileUtils 文件操作类
系统路径 Context.getPackageName(); // 用于获取APP的所在包目录 Context.getPackageCodePath(); //来获得当前应用程序对应的apk文件的路径 ...
- JavaScript大杂烩5 - JavaScript对象的若干问题
1. 类型检查:instanceof与typeof 这是两个相似的操作符,instanceof用于检测函数的实例类型,主要是在面向对象编程中检查new出来的对象类型,需要注意instanceof是检查 ...
- [20171206]rman与truncate.txt
[20171206]rman与truncate.txt --//昨天下班在回家的路上,突然想起以前遇到的问题,就是truncate表后,rman做备份时会备份多少truncate表的信息,--//当时 ...
- VS2015安装与C++进行简单单元测试
1:VS2015是微软最新发布的编译器,http://www.itellyou.cn/这是我们的北航大神助教提供的下载网址,以前我们都是自己在网上找,找到的总不是那么如意,这下大神助教提供的网址就好好 ...
- [ISE 14.7] _pn.exe 崩溃问题 点击浏览崩溃问题
前言 装了大半天的ISE 14.7 结果新建工程的时候只要点击浏览文件夹,直接无响应,其实和其他_pn.exe崩溃是一样的. 解决方法 第一步:非常重要,进行文件备份,将"F:\Xilinx ...
- 错误: 无法访问InstrumentationTestRunner 找不到android.test.InstrumentationTestRunner的类文件
错误: 无法访问InstrumentationTestRunner找不到android.test.InstrumentationTestRunner的类文件
- Activity声明周期1
oncreate():在Activity对象第一次创建时调用 onStart():当Activity变得可见时调用该函数 onResume():当Activity开始准备于用户交互时调用该方法(即获得 ...
- vue-cli 如何打包上线
以vue创建的官方例子为例子,我们在开发环境的时候会 npm run dev ,生成 而想要打包成一份很简单, 只需要 npm run build 这个命令 这两种命令的配置文件在config的ind ...
- 【js】 ==与===区别
1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 2)同类型比较,直接进 ...
- Arduino IDE for ESP8266 项目(4)HTTP客户端+服务端
Arduio for esp8266 官网API:http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html 很有 ...