原文链接:http://blog.csdn.net/ikerpeng/article/details/20523679

参考资料:http://matplotlib.org/gallery.html   matplotlib画廊

有少量修改,如有疑问,请访问原作者!

首先补充一下:两种体系7种颜色 r g b y m c k (红,绿,蓝,黄,品红,青,黑)

在科研的过程中,坐标系中的XY不一定就是等尺度的。例如在声波中对Y轴取对数。肆意我们也必须知道这种坐标系如何画出来的。

 1:对数坐标图

有3个函数可以实现这种功能,分别是:semilogx(),semilogy(),loglog()。它们分别表示对X轴,Y轴,XY轴取对数。下面在一个2*2的figure里面来比较这四个子图(还有plot())。

def drawsemilogx():w=np.linspace(0.1,1000,1000)  p=np.abs(1/(1+0.1j*w))  plt.subplot(221)  plt.plot(w,p,lw=2)  plt.xlabel('X')  plt.ylabel('y');plt.subplot(222)  plt.semilogx(w,p,lw=2)  plt.ylim(0,1.5)  plt.xlabel('log(X)')  plt.ylabel('y')  plt.subplot(223)  plt.semilogy(w,p,lw=2)  plt.ylim(0,1.5)  plt.xlabel('x')  plt.xlabel('log(y)')  plt.subplot(224)  plt.loglog(w,p,lw=2)  plt.ylim(0,1.5)  plt.xlabel('log(x)')  plt.xlabel('log(y)')  plt.show() 

如上面的代码所示,对一个低通滤波器函数绘图。得到四个不同坐标尺度的图像。如下图所示:

2,极坐标图像
    极坐标系中的点由一个夹角和一段相对于中心位置的距离来表示。其实在plot()函数里面本来就有一个polar的属性,让他为True就行了。下面绘制一个极坐标图像:

def drawEightFlower():theta=np.arange(0,2*np.pi,0.02)  plt.subplot(121,polar=True)  plt.plot(theta,2*np.ones_like(theta),lw=2)  plt.plot(theta,theta/6,'--',lw=2)  plt.subplot(122,polar=True)  plt.plot(theta,np.cos(5*theta),'--',lw=2)  plt.plot(theta,2*np.cos(4*theta),lw=2)  plt.rgrids(np.arange(0.5,2,0.5),angle=45)  plt.thetagrids([0,45,90]);plt.show();  

整个代码很好理解,在后面的13,14行没见过。第一个plt.rgrids(np.arange(0.5,2,0.5),angle=45) 表示绘制半径为0.5 1.0 1.5的三个同心圆,同时将这些半径的值标记在45度位置的那个直径上面。plt.thetagrids([0,45,90]) 表示的是在theta为0,45,90度的位置上标记上度数。得到的图像是:

3,柱状图:

核心代码matplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, **kwargs)里面重要的参数是左边起点,高度,宽度。下面例子:

def drawPillar():   n_groups = 5;     means_men = (20, 35, 30, 35, 27)  means_women = (25, 32, 34, 20, 25)  fig, ax = plt.subplots()  index = np.arange(n_groups)  bar_width = 0.35  opacity = 0.4  rects1 = plt.bar(index, means_men, bar_width,alpha=opacity, color='b',label=    'Men')  rects2 = plt.bar(index + bar_width, means_women, bar_width,alpha=opacity,color='r',label='Women')  plt.xlabel('Group')  plt.ylabel('Scores')  plt.title('Scores by group and gender')  plt.xticks(index + bar_width, ('A', 'B', 'C', 'D', 'E'))  plt.ylim(0,40);  plt.legend();  plt.tight_layout(); plt.show();  

得到的图像是:

再贴一图:

这是我关于pose识别率的实验结果,感觉结果真是令人不可思议!(非博主原文!)

def drawBarChartPoseRatio():n_groups = 5    means_VotexF36 = (0.84472049689441, 0.972477064220183, 1.0, 0.9655172413793104, 0.970970970970971)  means_VotexF50 = (1.0,              0.992992992992993, 1.0, 0.9992348890589136, 0.9717125382262997)means_VFH36    = (0.70853858784893, 0.569731081926204, 0.8902900378310215, 0.8638638638638638, 0.5803008248423096)means_VFH50    = (0.90786948176583, 0.796122576610381, 0.8475120385232745, 0.8873762376237624, 0.5803008248423096)  fig, ax = plt.subplots()  index = np.arange(n_groups)  bar_width = 0.3  opacity   = 0.4  rects1 = plt.bar(index,             means_VFH36,    bar_width/2, alpha=opacity, color='r', label='VFH36'   )  rects2 = plt.bar(index+ bar_width/2,  means_VFH50,  bar_width/2, alpha=opacity, color='g', label='VFH50'   )  rects3 = plt.bar(index+bar_width, means_VotexF36,     bar_width/2, alpha=opacity, color='c', label='VotexF36')  rects4 = plt.bar(index+1.5*bar_width, means_VotexF50, bar_width/2, alpha=opacity, color='m', label='VotexF50')  plt.xlabel('Category')  plt.ylabel('Scores')  plt.title('Scores by group and Category')  #plt.xticks(index - 0.2+ 2*bar_width, ('balde', 'bunny', 'dragon', 'happy', 'pillow'))plt.xticks(index - 0.2+ 2*bar_width, ('balde', 'bunny', 'dragon', 'happy', 'pillow'),fontsize =18)plt.yticks(fontsize =18)  #change the num axis sizeplt.ylim(0,1.5)  #The ceilplt.legend()  plt.tight_layout()  plt.show()

柱状图显示:

4:散列图,由离散的点构成的。

函数是:

matplotlib.pyplot.scatter(x, y, s=20, c='b', marker='o', cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, hold=None,**kwargs),其中,xy是点的坐标,s点的大小,maker是形状可以maker=(5,1)5表示形状是5边型,1表示是星型(0表示多边形,2放射型,3圆形);alpha表示透明度;facecolor=‘none’表示不填充。例子如下:

def drawStar():plt.figure(figsize=(8,4))  x=np.random.random(100)  y=np.random.random(100)  plt.scatter(x,y,s=x*1000,c='y',marker=(5,1),alpha=0.5,lw=2,facecolors='none')  plt.xlim(0,1)  plt.ylim(0,1)  plt.show() 

上面代码的facecolors参数使得前面的c=‘y’不起作用了。图像:

5,3D图像,主要是调用3D图像库。看下面的例子:

def draw3Dgrid():x,y=np.mgrid[-2:2:20j,-2:2:20j]  z=x*np.exp(-x**2-y**2)   ax=plt.subplot(111,projection='3d')  ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.coolwarm,alpha=0.8)  ax.set_xlabel('x')  ax.set_ylabel('y')  ax.set_zlabel('z')  plt.show()

得到的图像如下图所示:

到此,matplotlib基本操作的学习结束了,相信大家也可以基本完成自己的科研任务了。下面将继续学习python的相关课程,请继续关注。

参考书目:

《python科学计算》

《matplotlib手册》

Python:Matplotlib 画曲线和柱状图(Code)相关推荐

  1. python画柱状图怎么规定x轴_Python:Matplotlib 画曲线和柱状图(Code)

    有少量修改,如有疑问,请访问原作者! 首先补充一下:两种体系7种颜色 r g b y m c k (红,绿,蓝,黄,品红,青,黑) 在科研的过程中,坐标系中的XY不一定就是等尺度的.例如在声波中对Y轴 ...

  2. python画柱状图-Python:Matplotlib 画曲线和柱状图(Code)

    编辑推荐: 本文讲了对数坐标图,极坐标图像,柱状图,散列图,由离散的点构成的,3D图像,主要是调用3D图像库,希望对大家有帮助. 本文来自于csdn,由火龙果软件Delores编辑,推荐. 首先补充一 ...

  3. python matplotlib 画黑白的柱状图(论文专用)

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from pylab import * mpl.r ...

  4. python matplotlib画爱心

    python matplotlib画爱心 import matplotlib.pyplot as plt import numpy as np# 创建可以返回心形函数表达式的函数def f(x, y) ...

  5. Python matplotlib 画并保存 部分背景为透明的图

    Python matplotlib 画并保存 部分背景为透明的图 方法1 方法2 效果 部分背景为透明的图可以满足多种需求,比如在网页的彩色背景上显示绘图非常有用.根据matplotlib的官方文档, ...

  6. python画曲线代码_在Python里画曲线

    在Python里画曲线,常常用到wx.DC(设备上下文)和wx.Pen画笔,有可能需要下面的资源: wx.BufferedDC:用于缓存一套绘画命令,直到命令完整并准备在屏幕上绘画.这防止了显示中不必 ...

  7. python matplotlib 画棘状图和叠加柱状图

    2022年1月2日更新: # 绘制棘状图的函数 def jizhuangtu(b, colors=['#1f77b4','lightseagreen'], labels=None, title=Non ...

  8. python matplotlib画多个图_python matplotlib模块 如何画两张图出来

    展开全部 python matplotlib模块 如何画两张图出2113来的方法:5261 代码如下所示: import numpy as np import matplotlib.pyplot as ...

  9. Python+matplotlib画爱心

    谁说程序员不懂得浪漫?Python+matplotlib给你安排上~ 世界上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离:世界上最痴心的等待,是我当case你是switch,或许永 ...

最新文章

  1. dojo从asp.net中获取json数据
  2. php 上传图片并生成缩略图,php 图片上传并生成缩略图代码
  3. 智源研究院多位学者入选“三大奖”!2020年度国家科学技术奖初评结果公布
  4. 剑指offer 面试31题
  5. jenkins创建job不能用中文问题
  6. HDU4135 HDU2841 HDU1695 求[1,m]中与n互素的数的个数
  7. H.264码流结构解析
  8. C语言怎么确定用什么整形,【求助各位大虾!】 怎样用 if 语句验证一个整形数字。...
  9. Android 使用ViewPager实现view轮播效果,单个item分页样式,多个item分页样式,横向listview
  10. 在辞职后的旅途中:我写了个App 创立了一家公司
  11. Head First Java学习笔记(2):类与对象
  12. 使用pthread-win32工程编译静态库
  13. 模块化思想——粤嵌GEC6818读取图片宽度、高度、色深
  14. iOS网络编程--ASIHTTPRequest框架安装和配置-图文解说
  15. 35+大龄程序员被清退?
  16. 约瑟夫环c语言代码顺序存储,详解约瑟夫环问题及其相关的C语言算法实现
  17. access中布局为阶梯怎么设计_基于Solidworks的阶梯轴类零件参数化设计研究
  18. 软件工程中的数据流图
  19. 用python做透视表_Python Pandas透视表(pivot_table)详解
  20. Android去除默认提示音

热门文章

  1. 洛谷P4239 【模板】多项式求逆(加强版)(多项式求逆)
  2. python tkinter chk
  3. WannaCry警示:学会检测和减轻云端恶意内容
  4. SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案
  5. iframe框架大小自适应
  6. PHP 实现移除数组中项目为空的元素或为某值的元素
  7. 【资源分享】CS起源 V34.4044(经典版本)
  8. python 垃圾回收
  9. APK反编译得工具总结(转载)
  10. 百度推出 MIP Baidu Path链接