python实现MINITAB中的等值图

网上python都是抄袭的范例,没有一个是根据3个一位数组来实现等组图的,实在无语!经大量的学习国外例子才终于实现了该功能,其实不难,难的是我们的工程师们没有挖掘学习的习惯。现在贡献出来,供和我一样迷茫的小白学习共勉!

本实例数据来源MINITAB,可以形成对比:

时间和品质关系图,来自MINTAB:

表格 温度

数据:

代码如下:

PYTHON 实现:

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from scipy.interpolate import griddata

#plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus']=False

data=pd.read_excel('C:\TEMP\SAMPLE.xlsx',sheet_name='Sheet1',usecols=['TEMP','TIME','QUA'],header=2)

x=data.iloc[:,0]

y=data.iloc[:,1]

z=data.iloc[:,2]

xi=np.linspace(min(x),max(x))

yi=np.linspace(min(y),max(y))

xi,yi=np.meshgrid(xi,yi)

zi=griddata(data.iloc[:,0:2],z,(xi,yi),method='cubic')

#三维立体图

fig=plt.figure()

ax = fig.add_subplot(projection='3d')

#ax=fig.gca(projection='3d')---错误表达

surf=ax.plot_surface(xi,yi,zi,cmap='BuPu',linewidth=0,antialiased=False)

fig.colorbar(surf)

ax.set_title('Qua-Time-Temp')

plt.show()

#-----------三维立体图图一-----------------------------------

#--------等高线图=-------

levels=np.linspace(np.min(z),np.max(z),30)

fig1,ax1=plt.subplots(figsize=(8,6))

cs=ax1.contour(xi,yi,zi,levels=levels)

ax1.clabel(cs,inline=True,fontsize=6)

ax1.set_title('等高线图')

plt.show()

#---等高线色彩----

x=np.array(x)  #--x类型要改变才可以使用TRI的函数

y=np.array(y)  #--y类型要改变

z=np.array(z)  #--z类型要改变

triang = tri.Triangulation(x, y)

  

triang.set_mask(np.hypot(x[triang.triangles].mean(axis = 1),

                         y[triang.triangles].mean(axis = 1))

                < min_radius)

    

fig2, ax2 = plt.subplots()

#ax1.set_aspect('equal')----会导致图片变形

tcf = ax2.tricontourf(triang, z)

fig2.colorbar(tcf)

ax2.tricontour(triang, z, colors ='k')

fig2.suptitle('matplotlib.pyplot.tricontour() Example') 

 

plt.show()

#=======END========================

以下是实现的图片及MINITAB对比图:

和MINITAB基本一致

等高线图=

和MINITAB相比,精度更高一些。

等高线色彩图,和MINITAB基本一致:

至此程序实现了基本要求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值