matplotlib是Python最著名的绘图库,本文给大家分享了利用matplotlib+numpy绘制多种绘图的方法实例,其中包括填充图、散点图(scatter plots)、. 条形图(bar plots)、等高线图(contour plots)、 点阵图和3D图,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。本文将以例子的形式分析matplot中支持的,分析中常用的几种图。其中包括填充图、散点图(scatter plots)、. 条形图(bar plots)、等高线图(contour plots)、 点阵图和3D图,下面来一起看看详细的介绍:

一、填充图

参考代码

from matplotlib.pyplot import *

x=linspace(-3,3,100)

y1=np.sin(x)

y2=np.cos(x)

fill_between(x,y1,y2,where=(y1>=y2),color='red',alpha=0.25)

fill_between(x,y1,y2,where=(y<>y2),color='green',alpha=0.25)

plot(x,y1)

plot(x,y2)

show()

简要分析

这里主要是用到了fill_between函数。这个函数很好理解,就是传入x轴的数组和需要填充的两个y轴数组;然后传入填充的范围,用where=来确定填充的区域;最后可以加上填充颜色啦,透明度之类修饰的参数。

当然fill_between函数还有更加高级的用法,详见fill_between用法或者help文档。

效果图

二、散点图(scatter plots)

参考代码

from matplotlib.pyplot import *

n = 1024

X = np.random.normal(0,1,n)

Y = np.random.normal(0,1,n)

T = np.arctan2(Y,X)

scatter(X,Y, s=75, c=T, alpha=.5)

xlim(-1.5,1.5)

ylim(-1.5,1.5)

show()

简要分析

首先介绍一下numpy 的normal函数,很明显,这是生成正态分布的函数。这个函数接受三个参数,分别表示正态分布的平均值,标准差,还有就是生成数组的长度。很好记。

然后是arctan2函数,这个函数接受两个参数,分别表示y数组和x数组,然后返回对应的arctan(y/x)的值,结果是弧度制。

接下来用到了绘制散点图的scatter方法,首先当然是传入x和y数组,接着s参数表示scale,即散点的大小;c参数表示color,我给他传的是根据角度划分的一个数组,对应的就是每一个点的颜色(虽然不知道是怎么对应的,不过好像是一个根据数组内其他元素进行的相对的转换,这里不重要了,反正相同的颜色赋一样的值就好了);最后是alpha参数,表示点的透明度。

至于scatter函数的高级用法可以参见官方文档scatter函数或者help文档。

最后设置下坐标范围就好了。

效果图

三、条形图(bar plots)

参考代码

from matplotlib.pyplot import *

n = 12

X = np.arange(n)

Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)

Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)

bar(X, +Y1, facecolor='#9999ff', edgecolor='white')

bar(X, -Y2, facecolor='#ff9999', edgecolor='white')

for x,y in zip(X,Y1):

text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom')

for x,y in zip(X,Y2):

text(x+0.4, -y-0.05, '%.2f' % y, ha='center', va= 'top')

xlim(-.5,n)

xticks([])

ylim(-1.25,+1.25)

yticks([])

show()

简要分析

注意要手动导入pylab包,否则会找不到bar。。。

首先用numpy的arange函数生成一个[0,1,2,…,n]的数组。(用linspace也可以)

其次用numpy的uniform函数生成一个均匀分布的数组,传入三个参数分别表示下界、上界和数组长度。并用这个数组生成需要显示的数据。

然后就是bar函数的使用了,基本用法也和之前的plot、scatter类似,传入横纵坐标和一些修饰性参数。

接着我们需要用for循环来为柱状图显示数字:用python的zip函数将X和Y1两两配对并循环遍历,得到每一个数据的位置,然后用text函数在该位置上显示一个字符串(注意位置上的细节调整)。text传入横纵坐标,要显示的字符串,ha参数制定横向对齐,va参数制定纵向对齐。

最后调整下坐标范围,并且取消横纵坐标上的刻度以保持美观即可。

至于bar函数的具体用法可以参照bar函数用法或者help文档。

效果图

四、等高线图(contour plots)

参考代码

from matplotlib.pyplot import *

def f(x,y):

return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 256

x = np.linspace(-3,3,n)

y = np.linspace(-3,3,n)

X,Y = np.meshgrid(x,y)

contourf(X, Y, f(X,Y), 8, alpha=.75, cmap=cm.hot)

C = contour(X, Y, f(X,Y), 8, colors='black', linewidth=.5)

clabel(C, inline=1, fontsize=10)

show()

简要分析

首先要明确等高线图是一个三维立体图,所以我们要建立一个二元函数f,值由两个参数控制,(注意,这两个参数都应该是矩阵)。

然后我们需要用numpy的meshgrid函数生成一个三维网格,即,x轴由第一个参数指定,y轴由第二个参数指定。并返回两个增维后的矩阵,今后就用这两个矩阵来生成图像。

接着就用到coutourf函数了,所谓contourf,大概就是contour fill的意思吧,只填充,不描边;这个函数主要是接受三个参数,分别是之前生成的x、y矩阵和函数值;接着是一个整数,大概就是表示等高线的密度了,有默认值;然后就是透明度和配色问题了,cmap的配色方案这里不多研究。

随后就是contour函数了,很明显,这个函数是用来描线的。用法可以类似的推出来,不解释了,需要注意的是他返回一个对象,这个对象一般要保留下来个供后续的加工细化。

最后就是用clabel函数来在等高线图上表示高度了,传入之前的那个contour对象;然后是inline属性,这个表示是否清除数字下面的那条线,为了美观当然是清除了,而且默认的也是1;再就是指定线的宽度了,不解释,。

效果图

五、点阵图

参考代码

from matplotlib.pyplot import *

def f(x,y):

return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 10

x = np.linspace(-3,3,3.5*n)

y = np.linspace(-3,3,3.0*n)

X,Y = np.meshgrid(x,y)

Z = f(X,Y)

imshow(Z,interpolation='nearest', cmap='bone', origin='lower')

colorbar(shrink=.92)

show()

简要分析

这段代码的目的就是将一个矩阵直接转换为一张像照片一样的图,完整的进行显示。

前面的代码就是生成一个矩阵Z,不作解释。

接着用到了imshow函数,传人Z就可以显示出一个二维的图像了,图像的颜色是根据元素的值进行的自适应调整,后面接了一些修饰性的参数,比如配色方案(cmap),零点位置(origin)。

最后用colorbar显示一个色条,可以不传参数,这里传进去shrink参数用来调节他的长度。

效果图

六、3D图

参考代码

import numpy as np

from pylab import *

from mpl_toolkits.mplot3d import Axes3D

fig = figure()

ax = Axes3D(fig)

X = np.arange(-4, 4, 0.25)

Y = np.arange(-4, 4, 0.25)

X, Y = np.meshgrid(X, Y)

R = np.sqrt(X**2 + Y**2)

Z = np.sin(R)

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)

ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.cm.hot)

ax.set_zlim(-2,2)

show()

简要分析

有点麻烦,需要用到的时候再说吧,不过原理也很简单,跟等高线图类似,先画图再描线,最后设置高度,都是一回事。

效果图

总结

【相关推荐】

以上就是利用python中的绘图库绘图的方法介绍的详细内容,更多请关注php中文网其它相关文章!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python绘图库_利用python中的绘图库绘图的方法介绍相关推荐

  1. python右对齐格式化输出_Python中格式化输出的两种方法介绍

    本篇文章给大家带来的内容是关于Python中格式化输出的两种方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 方式一:使用占位符 % 常用占位符:% s (s = string ...

  2. python代码物理_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  3. python共享文件权限_利用Python实现在同一网络中的本地文件共享方法

    本文利用Python3启动简单的HTTP服务器,以实现在同一网络中共享本地文件. 启动HTTP服务器 打开终端,转入目标文件所在文件夹,键入以下命令: $ cd /Users/zero/Documen ...

  4. python汇率转换_利用Python中的Xpath实现一个在线汇率转换器

    前言 在之前的语法里面,我们记得有一个初识Python之汇率转换篇,在那个程序里面我们发现可以运用一些基础的语法写一个汇率计算,但是学到后面的小伙伴就会发现这个小程序有一定的弊端. 首先,它不可以实时 ...

  5. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

  6. python照片墙地图_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  7. python音频聚类_利用python的KMeans和PCA包实现聚类算法

    题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...

  8. python 词云_利用Python生成词云

    利用Python生成词云 一.第三方库的安装与介绍 1.1  Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...

  9. python爬虫背景_利用Python代码实现一键抠背景功能

    前言 又是一个逛csdn发现的一个有趣的小项目,可以一键抠背景,需要用到removebg模块及其API,API可从其官网免费获取,网址如下https://www.remove.bg/zh ps:加上/ ...

最新文章

  1. 如何使用 System.IO 和 Visual C# 读取文本文件
  2. C语言多维数组做函数参数技术推演
  3. ahjesus C# 4.0 Parallel 并行运算
  4. 【英语学习】【Daily English】U02 Daily Routine L03 Tuesday night is curry night
  5. 2021密码应用技术白皮书
  6. Javascript中的运算符及其优先级顺序
  7. PSP播放AVI/PMP高清电影及视频转换指南
  8. PLL锁相环及其locked信号
  9. 第4讲 组合逻辑电路实例:编码器、译码器、数据选择器、加法器、数值比较器、代码转换器——计算机逻辑基础
  10. 360安全卫士团队版or企业版卸载
  11. matlab画箱型图均值方差,Matlab 绘制箱线图
  12. 分布式技术与实战第六课 分布式缓存设计
  13. jdbc shadring 扩容_shadring-jdbc解决查询数据库分库分表的问题
  14. 用Hook解决在VC++与C++Builder方面界面设计的一些问题
  15. VMware Workstation 12Pro安装步骤
  16. 图卷积网络、图神经网络必读论文
  17. 3D引擎中的大量Morph 动画, 变形变形变形
  18. 苹果笔记本电脑我的计算机在哪里设置密码,苹果笔记本怎么设置开机密码_苹果笔记本如何设置开机密码-win7之家...
  19. Impression of《Bible》
  20. [js]windows下通过命令行运行javascript脚本,支持命令行参数

热门文章

  1. 安卓设备UI自动化测试
  2. linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)...
  3. 两轮差分底盘运动学模型
  4. 计算机考试感受作文,考试的感受作文(集锦15篇)
  5. echarts 柱状图柱子改成圆柱体_玩转ECharts之实现“顶端装饰”
  6. 腾讯新总部曝光,藏着让4万员工拼命工作的套路!
  7. 从这里开始记录追逐游戏梦的人生
  8. 浪涌保护器和电涌是什么,浪涌保护器的作用
  9. Windows 11下安装 nginx
  10. Android中利用Application操作全局变量