参考资料: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())。

1. <span style="font-size:14px;">  1 import numpy as np  
2. 2 import matplotlib.pyplot as plt  
3. 3 w=np.linspace(0.1,1000,1000)  
4. 4 p=np.abs(1/(1+0.1j*w))  
5. 5   
6. 6 plt.subplot(221)  
7. 7 plt.plot(w,p,lw=2)  
8. 8 plt.xlabel('X')  
9. 9 plt.ylabel('y')  
10. 10   
11. 11   
12. 12 plt.subplot(222)  
13. 13 plt.semilogx(w,p,lw=2)  
14. 14 plt.ylim(0,1.5)  
15. 15 plt.xlabel('log(X)')  
16. 16 plt.ylabel('y')  
17. 17   
18. 18 plt.subplot(223)  
19. 19 plt.semilogy(w,p,lw=2)  
20. 20 plt.ylim(0,1.5)  
21. 21 plt.xlabel('x')  
22. 22 plt.xlabel('log(y)')  
23. 23   
24. 24 plt.subplot(224)  
25. 25 plt.loglog(w,p,lw=2)  
26. 26 plt.ylim(0,1.5)  
27. 27 plt.xlabel('log(x)')  
28. 28 plt.xlabel('log(y)')  
29. 29 plt.show()  
30. </span>

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


python matplotlib柱状图颜色 matplotlib不同颜色的柱状图_3D

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

1.   1 import numpy as np  
2. 2 import matplotlib.pyplot as plt  
3. 3   
4. 4 theta=np.arange(0,2*np.pi,0.02)  
5. 5   
6. 6 plt.subplot(121,polar=True)  
7. 7 plt.plot(theta,2*np.ones_like(theta),lw=2)  
8. 8 plt.plot(theta,theta/6,'--',lw=2)  
9. 9   
10. 10 plt.subplot(122,polar=True)  
11. 11 plt.plot(theta,np.cos(5*theta),'--',lw=2)  
12. 12 plt.plot(theta,2*np.cos(4*theta),lw=2)  
13. 13 plt.rgrids(np.arange(0.5,2,0.5),angle=45)  
14. 14 plt.thetagrids([0,45,90])  
15. 15   
16. 16 plt.show()  
17. ~

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度的位置上标记上度数。得到的图像是:


python matplotlib柱状图颜色 matplotlib不同颜色的柱状图_3D_02


3,柱状图:

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

1.  1 import numpy as np  
2. 2 import matplotlib.pyplot as plt  
3. 3   
4. 4   
5. 5 n_groups = 5  
6. 6   
7. 7 means_men = (20, 35, 30, 35, 27)  
8. 8 means_women = (25, 32, 34, 20, 25)  
9. 9   
10. 10 fig, ax = plt.subplots()  
11. 11 index = np.arange(n_groups)  
12. 12 bar_width = 0.35  
13. 13   
14. 14 opacity = 0.4  
15. 15 rects1 = plt.bar(index, means_men, bar_width,alpha=opacity, color='b',label=    'Men')  
16. 16 rects2 = plt.bar(index + bar_width, means_women, bar_width,alpha=opacity,col    or='r',label='Women')  
17. 17   
18. 18 plt.xlabel('Group')  
19. 19 plt.ylabel('Scores')  
20. 20 plt.title('Scores by group and gender')  
21. 21 plt.xticks(index + bar_width, ('A', 'B', 'C', 'D', 'E'))  
22. 22 plt.ylim(0,40)  
23. 23 plt.legend()  
24. 24   
25. 25 plt.tight_layout()  
26. 26 plt.show()

得到的图像是:

python matplotlib柱状图颜色 matplotlib不同颜色的柱状图_ci_03

再贴一图:

这是我关于pose识别率的实验结果,感觉结果真是令人不可思议!

    1. def drawBarChartPoseRatio():  
    2. 5      
    3. 0.84472049689441, 0.972477064220183, 1.0, 0.9655172413793104, 0.970970970970971)    
    4. 1.0,              0.992992992992993, 1.0, 0.9992348890589136, 0.9717125382262997)  
    5. 0.70853858784893, 0.569731081926204, 0.8902900378310215, 0.8638638638638638, 0.5803008248423096)  
    6. 0.90786948176583, 0.796122576610381, 0.8475120385232745, 0.8873762376237624, 0.5803008248423096)    
    7.       
    8.     fig, ax = plt.subplots()    
    9.     index = np.arange(n_groups)    
    10. 0.3    
    11. 0.4    
    12.       
    13. 2, alpha=opacity, color='r', label='VFH36'   )    
    14. 2,  means_VFH50,  bar_width/2, alpha=opacity, color='g', label='VFH50'   )    
    15.      
    16. 2, alpha=opacity, color='c', label='VotexF36')    
    17. 1.5*bar_width, means_VotexF50, bar_width/2, alpha=opacity, color='m', label='VotexF50')    
    18.       
    19. 'Category')    
    20. 'Scores')    
    21. 'Scores by group and Category')    
    22.       
    23. #plt.xticks(index - 0.2+ 2*bar_width, ('balde', 'bunny', 'dragon', 'happy', 'pillow'))  
    24. 0.2+ 2*bar_width, ('balde', 'bunny', 'dragon', 'happy', 'pillow'),fontsize =18)  
    25.   
    26. 18)  #change the num axis size  
    27.   
    28. 0,1.5)  #The ceil  
    29.     plt.legend()    
    30.     plt.tight_layout()    
    31.     plt.show()

    柱状图显示:

    python matplotlib柱状图颜色 matplotlib不同颜色的柱状图_ci_04

    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’表示不填充。例子如下:

    1.  1 import numpy as np  
    2. 2 import matplotlib.pyplot as plt  
    3. 3   
    4. 4 plt.figure(figsize=(8,4))  
    5. 5 x=np.random.random(100)  
    6. 6 y=np.random.random(100)  
    7. 7 plt.scatter(x,y,s=x*1000,c='y',marker=(5,1),alpha=0.5,lw=2,facecolors='none')  
    8. 8 plt.xlim(0,1)  
    9. 9 plt.ylim(0,1)  
    10. 10   
    11. 11 plt.show()

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

    python matplotlib柱状图颜色 matplotlib不同颜色的柱状图_ci_05


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

     1 import numpy as np  1. 2 import matplotlib.pyplot as plt  
    2. 3 import mpl_toolkits.mplot3d  
    3. 4   
    4. 5 x,y=np.mgrid[-2:2:20j,-2:2:20j]  
    5. 6 z=x*np.exp(-x**2-y**2)  
    6. 7   
    7. 8 ax=plt.subplot(111,projection='3d')  
    8. 9 ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.coolwarm,alpha=0.8)  
    9. 10 ax.set_xlabel('x')  
    10. 11 ax.set_ylabel('y')  
    11. 12 ax.set_zlabel('z')  
    12. 13   
    13. 14 plt.show()

    得到的图像如下图所示:

    python matplotlib柱状图颜色 matplotlib不同颜色的柱状图_ci_06


    到此,matplotlib基本操作的学习结束了,相信大家也可以基本完成自己的科研任务了。

    参考书目:

    《python科学计算》

    《matplotlib手册》