1. 最近在測試一款設備,采集了一些設備后需要一幀一幀顯示圖像,經常使用Python,所以選用了Matplotlib進行圖像操作
數據結構: timesatamp polar_distance horizontal_angle refelectivity_intensity,所有數據類型都是 float,儲存在文件內并且以空格分隔
import math
import matplotlib.pyplot as plt#read data from file
def LoadData(filename):inFile = open(filename, 'r')#declare two empty list,to save datainten = []polar_dist = []hori_angle = []for line in inFile:splitline = line.split(" ")polar_dist.append(splitline[1])hori_angle.append(splitline[2])inten.append(splitline[3])inFile.close() #mapping to floatpolar_dist = list(map(float,polar_dist))hori_angle = list(map(float,hori_angle))inten = list(map(float,inten))return(polar_dist, hori_angle,inten)
2. 顯示極坐標圖像
def GenerateImageFromData(polar,angle,inten):d2r = math.pi/180for i in range(len(polar)):angle[i] = d2r*(angle[i] +180)plt.ion()
#inreactive codeax = plt.subplot(111, projection='polar')for i in range(100):c = ax.scatter(angle[i*167 :(i+1)*167], polar[i*167 :(i+1)*167], s = 10)plt.show()plt.pause(1)
3. 調用函數
if __name__=="__main__":(polar,angle,inten) = LoadData("CloudData.txt")GenerateImageFromData(polar,angle,inten)
當繪圖語句中加入pl.ion()時,表示打開了交互模式。此時python解釋器解釋完所有命令后,給你出張圖,但不會結束會話,而是等著你跟他交流交流。如果你繼續往代碼中加入語句,run之后,你會實時看到圖形的改變。當繪圖語句中加入pl.ioff()時或不添加pl.ion()時,表示打關了交互模式。
4. 另外一個example?
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 16 21:26:17 2017@author: XX
"""import matplotlib.pylab as plt
import numpy as np
import math #clear images
plt.close()fig = plt.figure()
ax = fig.add_subplot(111)#ratio of x and y axis
ax.axis("equal")#enable grid of image
ax.grid(True)#activate inreactivate mode
plt.ion()init_x = 0.0
init_y = 3.5
init_angle = 45
init_wind_speed = 3print("inreactive mode beginning")
try: for t in range(50):x = init_x + init_wind_speed*math.sin(math.pi/180*init_angle)*ty = init_y + init_wind_speed*math.cos(init_angle*math.pi/180)*tax.scatter(x,y,c='r', s =5, marker ='^')plt.pause(0.2)
except Exception as err:print(err)
?