"""用於驗證整體趨勢正確性""" #!python3 #-*- coding:utf-8 -*- import matplotlib as mpl import matplotlib.pyplot as plt from pylab import *#中文顯示 from mpl_toolkits.mplot3d import Axes3D import xlrd """----------------------------得到支撐數據---------------------------""" mpl.rcParams['font.sans-serif'] = ['SimHei']#figure字體設定,正常顯示中文 mpl.rcParams['axes.unicode_minus']=False#figure符號設定,正常顯示負數 zhfont = matplotlib.font_manager.FontProperties(fname="C:\Windows\Fonts\simsun.ttc")#圖示字體設置 font = { "color":"b", "style":"oblique", "size":20, "weight":"bold" } #data_t = [] data_x = [] data_y = [] data_z = [] data_1_x = [] data_1_y = [] data_1_z = [] #t_max = 0 #t_min = 0 x_max = 0 x_min = 0 y_max = 0 y_min = 0 z_max = 0 z_min = 0 x_1_max = 0 x_1_min = 0 y_1_max = 0 y_1_min = 0 z_1_max = 0 z_1_min = 0 data = xlrd.open_workbook("點集.xlsx")#打開excel table = data.sheet_by_name("處理值")#獲取名稱為處理值的表 table_1 = data.sheet_by_name("理論值")#獲取名稱為理論值的表 nrows = table.nrows#獲取行數 ncols = table.ncols#獲取列數 nrows_1 = table_1.nrows#獲取行數 ncols_1 = table_1.ncols#獲取列數 for i in range(1,nrows): #data_t.append(table.cell(i,0).value)#逐行讀取第一列值,並存至data_t數組中 data_x.append(table.cell(i,1).value)#逐行讀取第一列值,並存至data_t數組中 data_y.append(table.cell(i,2).value)#逐行讀取第二列值,並存至data_y數組中 data_z.append(table.cell(i,3).value)#逐行讀取第三列值,並存至data_z數組中 for i in range(1,nrows_1): #data_t.append(table.cell(i,0).value)#逐行讀取第一列值,並存至data_t數組中 data_1_x.append(table_1.cell(i,1).value)#逐行讀取第一列值,並存至data_t數組中 data_1_y.append(table_1.cell(i,2).value)#逐行讀取第二列值,並存至data_y數組中 data_1_z.append(table_1.cell(i,3).value)#逐行讀取第三列值,並存至data_z數組中 #t_max = max(data_t) #t_min = min(data_t) x_max = max(data_x) x_min = min(data_x) y_max = max(data_y) y_min = min(data_y) z_max = max(data_z) z_min = min(data_z) x_1_max = max(data_1_x) x_1_min = min(data_1_x) y_1_max = max(data_1_y) y_1_min = min(data_1_y) z_1_max = max(data_1_z) z_1_min = min(data_1_z) def if_max(a,b): if a >= b: max = a else: max = b return max def if_min(a,b): if a <= b: min = a else: min = b return min xmax = if_max(x_max,x_1_max) xmin = if_min(x_min,x_1_min) ymax = if_max(y_max,y_1_max) ymin = if_min(y_min,y_1_min) zmax = if_max(z_max,z_1_max) zmin = if_min(z_min,z_1_min) """----------------------------實際處理操作--------------------------""" fig = plt.figure(figsize=(8,4))#創建繪制窗口 ax = fig.gca(projection = "3d")#3d坐標軸 ax.plot(data_x,data_y,data_z,"r-",label="處理曲線",linewidth=0.5)#處理曲線 ax.plot(data_1_x,data_1_y,data_1_z,"g-",label="理論曲線",linewidth=0.5)#理論曲線 ax.set_xlabel("X",fontdict = font) ax.set_ylabel("Y",fontdict = font) ax.set_zlabel("Z",fontdict = font) ax.set_title("趨勢比對圖") ax.set_xlim(xmin*0.9,xmax*1.1) ax.set_ylim(ymin*0.9,ymax*1.1) ax.set_zlim(zmin*0.9,zmax*1.1) ax.legend(prop = zhfont)#圖示 plt.show()