[关闭]
@BruceWang 2018-10-07T12:24:01.000000Z 字数 3436 阅读 1680

如何用python画像matlab一样的图?---matplot

python


1. 画散点图

  1. import numpy as np
  2. import pylab as plt
  3. data = np.loadtxt('wild_by_time_data.txt')
  4. # plt.plot(data[25,:], data[1,:], 'ro')
  5. # plt.xlabel('x')
  6. # plt.ylabel('y')
  7. # plt.xlim(4.0, 9.0)
  8. # plt.show()
  9. '''

2. 画折线图,三次多项式拟合

  1. x = data[25]
  2. y = data[1]
  3. z = np.polyfit(x, y, 3)#用3次多项式拟合
  4. p = np.poly1d(z)
  5. # print(p) #在屏幕上打印拟合多项式
  6. python
  7. yvals=p(x)#也可以使用yvals=np.polyval(z,x)
  8. plot1=plt.plot(x, y, '*',label='original values')
  9. plot2=plt.plot(x, yvals, 'r',label='polyfit values', linewidth=4)
  10. plt.xlabel('x axis')
  11. plt.ylabel('y axis')
  12. plt.xlim(4.0, 9.0)
  13. plt.ylim(0.0, 0.07)
  14. plt.legend(loc=4)#指定legend的位置,读者可以自己help它的用法
  15. plt.title('polyfitting')
  16. plt.show()

3. 用3次多项式拟合、三十次多项式插值

  1. x = data[25,:]
  2. y = data[1,:]
  3. z = np.polyfit(x, y, 3)#用3次多项式拟合
  4. p = np.poly1d(z)
  5. p30 = np.poly1d(np.polyfit(x, y, 30)) # 三十次多项式插值法
  6. xp = np.linspace(0, 9, 100)
  7. #### 其实plot0 = plot1 + plot2 + plot3 ####
  8. # plot0 = plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--')
  9. plot1 = plt.plot(x, y, '*', label='original values')
  10. plot2 = plt.plot(xp, p(xp), label='p')
  11. plot3 = plt.plot(xp, p30(xp), label='p30')
  12. plt.xlim(4, 9)
  13. plt.ylim(0.0, 0.05)
  14. # plt.xlabel('day')
  15. # plt.ylabel('ratio')
  16. plt.legend(loc=4)#指定legend的位置,读者可以自己help它的用法
  17. plt.title('wild_1')
  18. # plt.grid(True)
  19. # plt.xlim(4, 9) # x限值
  20. # plt.ylim(0.0, 0.05) # y限值
  21. # plt.xlabel('day') # xlabel
  22. # plt.ylabel('ratio') # ylabel
  23. # plt.legend(loc=4) # 指定legend的位置
  24. # plt.title('wild_1') # title
  25. # plt.grid(True) # 网格
  26. plt.show()

4. 多个子图画在一个图上

  1. x = data[25,:]
  2. y = data[1,:]
  3. z = np.polyfit(x, y, 3)#用3次多项式拟合
  4. p = np.poly1d(z)
  5. p30 = np.poly1d(np.polyfit(x, y, 30)) # 三十次多项式插值法
  6. ########################################################################
  7. plt.subplot(211)
  8. plot1=plt.plot(x, y, '*',label='original values')
  9. plt.xlim(4, 9) # x限值
  10. plt.ylim(0.0, 0.05) # y限值
  11. plt.xlabel('day') # xlabel
  12. plt.ylabel('ratio') # ylabel
  13. plt.legend(loc=4) # 指定legend的位置
  14. plt.title('wild_1') # title
  15. plt.grid(True) # 网格
  16. ########################################################################
  17. xp = np.linspace(0, 9, 100)
  18. plt.subplot(212)
  19. #### 其实plot0 = plot1 + plot2 + plot3 ####
  20. # plot0 = plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--')
  21. plot1 = plt.plot(x, y, '*', label='original values')
  22. plot2 = plt.plot(xp, p(xp), label='p')
  23. plot3 = plt.plot(xp, p30(xp), label='p30')
  24. plt.xlim(4, 9)
  25. plt.ylim(0.0, 0.05)
  26. # plt.xlabel('day')
  27. # plt.ylabel('ratio')
  28. plt.legend(loc=4)#指定legend的位置,读者可以自己help它的用法
  29. plt.title('wild_1')
  30. # plt.grid(True)
  31. # plt.xlim(4, 9) # x限值
  32. # plt.ylim(0.0, 0.05) # y限值
  33. # plt.xlabel('day') # xlabel
  34. # plt.ylabel('ratio') # ylabel
  35. # plt.legend(loc=4) # 指定legend的位置
  36. # plt.title('wild_1') # title
  37. # plt.grid(True) # 网格
  38. plt.show()

5. 画频率直方图

  1. y = data.reshape((1,24*4))
  2. y = y[0]
  3. plt.hist(y,4)
  4. # plt.hist(y,4,facecolor='blue')
  5. plt.xlabel('range of ratio')
  6. plt.xlim(0.0,0.08)
  7. plt.ylim(0,50)
  8. plt.ylabel('Frequency')
  9. plt.title('Frequency of wild_all')
  10. plt.show()

6. 统计一个数组各个数据的占比分布

  1. def str2num(s):
  2. class_dict = {0:'WK', 1:'N1', 2:'N2', 3:'N3', 4:'REM', 5:'NS'}
  3. return class_dict[s]
  4. import numpy as np
  5. y_dir = r"E:\New_data\dataset\y_all\y.npy"
  6. y = np.load(y_dir)
  7. print("{:}".format(y.shape))
  8. y = list(y)
  9. b = {}
  10. for i in y:
  11. b[i] = y.count(i)
  12. print(b)
  13. k = b.keys()
  14. v = b.values()
  15. # 画图:https://blog.csdn.net/yywan1314520/article/details/50818471
  16. import numpy as np
  17. import matplotlib.pyplot as plt
  18. from matplotlib import mlab
  19. from matplotlib import rcParams
  20. fig1 = plt.figure(2)
  21. rects =plt.bar(left = list(k),height = v,width = 0.4,align="center",yerr=0.1)
  22. plt.title('Distributions of data')
  23. def autolabel(rects):
  24. for rect in rects:
  25. height = rect.get_height()
  26. plt.text(rect.get_x()+rect.get_width()/10., 1.008*height, '%s' % int(height))
  27. autolabel(rects)
  28. plt.xticks(list(k),('WK', 'N1', 'N2', 'N3', 'REM'))
  29. plt.show()

亲爱哒~还在更新中喔。。。

疑问和转载声明

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注