这是使用scipy.optimize.curve_fit拟合表面的示例Python代码,它使原始数据生成3D散点图,对错误进行3D散点图绘制,绘制表面图和轮廓图.更改它以使用您自己的数据和功能,您应该已完成.

import numpy, scipy

import scipy.optimize

import matplotlib

from mpl_toolkits.mplot3d import Axes3D

from matplotlib import cm # to colormap 3D surfaces from blue to red

import matplotlib.pyplot as plt

graphWidth = 800 # units are pixels

graphHeight = 600 # units are pixels

# 3D contour plot lines

numberOfContourLines = 16

def SurfacePlot(equationFunc, data, params):

f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)

matplotlib.pyplot.grid(True)

axes = Axes3D(f)

x_data = data[0]

y_data = data[1]

z_data = data[2]

xModel = numpy.linspace(min(x_data), max(x_data), 20)

yModel = numpy.linspace(min(y_data), max(y_data), 20)

X, Y = numpy.meshgrid(xModel, yModel)

Z = equationFunc(numpy.array([X, Y]), *params)

axes.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=1, antialiased=True)

axes.scatter(x_data, y_data, z_data) # show data along with plotted surface

axes.set_title('Surface Plot (click-drag with mouse)') # add a title for surface plot

axes.set_xlabel('X Data') # X axis data label

axes.set_ylabel('Y Data') # Y axis data label

axes.set_zlabel('Z Data') # Z axis data label

plt.show()

plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems

def ContourPlot(equationFunc, data, params):

f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)

axes = f.add_subplot(111)

x_data = data[0]

y_data = data[1]

z_data = data[2]

xModel = numpy.linspace(min(x_data), max(x_data), 20)

yModel = numpy.linspace(min(y_data), max(y_data), 20)

X, Y = numpy.meshgrid(xModel, yModel)

Z = equationFunc(numpy.array([X, Y]), *params)

axes.plot(x_data, y_data, 'o')

axes.set_title('Contour Plot') # add a title for contour plot

axes.set_xlabel('X Data') # X axis data label

axes.set_ylabel('Y Data') # Y axis data label

CS = matplotlib.pyplot.contour(X, Y, Z, numberOfContourLines, colors='k')

matplotlib.pyplot.clabel(CS, inline=1, fontsize=10) # labels for contours

plt.show()

plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems

def ScatterPlot(data, title):

f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)

matplotlib.pyplot.grid(True)

axes = Axes3D(f)

x_data = data[0]

y_data = data[1]

z_data = data[2]

axes.scatter(x_data, y_data, z_data, depthshade=False, color='k')

axes.set_title(title)

axes.set_xlabel('X Data')

axes.set_ylabel('Y Data')

axes.set_zlabel('Z Data')

plt.show()

plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems

def EquationFunc(data, *params):

p0 = params[0]

p1 = params[1]

return p0 + numpy.sqrt(data[0]) + numpy.cos(data[1] / p1)

if __name__ == "__main__":

# raw data

xData = numpy.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0])

yData = numpy.array([11.0, 12.1, 13.0, 14.1, 15.0, 16.1, 17.0, 18.1, 90.0])

zData = numpy.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.0, 9.9])

pInitial = (1.0, 1.0)

popt, pcov = scipy.optimize.curve_fit(EquationFunc,(xData,yData),zData, p0=pInitial)

dataForPlotting = [xData, yData, zData]

ScatterPlot([xData, yData, zData], 'Data Scatter Plot (click-drag with mouse)')

SurfacePlot(EquationFunc, [xData, yData, zData], popt)

ContourPlot(EquationFunc, [xData, yData, zData], popt)

absError = zData - EquationFunc((xData,yData), *popt)

ScatterPlot([xData, yData, absError], 'Error Scatter Plot (click-drag with mouse)')

python怎么做回归分析_如何在Python中进行二维回归分析?相关推荐

  1. python如何做动画_如何在Python中动画动态系统的运动?

    假设你有一个4个微分方程,它代表了一个动态系统(推车上的钟摆)的运动,你用来求解这些方程scipy.integrate.odeint持续10秒,间隔0.01秒.在 最后得到尺寸为(1000,4)的解矩 ...

  2. java 二叉查找树_如何在Java中实现二叉搜索树( binary search tree)?

    二叉搜索树或BST是一种流行的数据结构,用于保持元素的顺序.二叉搜索树是二叉树,其中左子节点的值小于或等于父节点,右子节点的值大于或等于父节点.由于它是二叉树,它只能有0,1或2个子节点.二叉搜索树之 ...

  3. python右对齐 数字_如何在Python中右对齐数值数据?

    我有一些数据,我显示在3列格式,形式"键:值键:键:值键:值".这里有一个例子: p: 1 sl: 10 afy: 4 q: 12 lg: 10 kla: 3 r: 0 kl: 1 ...

  4. python 指定证书验证_如何在python中验证SSL证书?

    我需要验证我的自定义CA签署了证书.使用OpenSSL命令行实用程序很容易做到: # Custom CA file: ca-cert.pem # Cert signed by above CA: bo ...

  5. python隐藏启动台_如何在Python中启动后台进程?

    如何在Python中启动后台进程? 我正在尝试将shell脚本移植到更易读的python版本. 原始shell脚本在后台使用"&"启动多个进程(实用程序,监视器等). 如何 ...

  6. python的loc函数_如何在pandas中使用loc、iloc函数进行数据索引(入门篇)

    在数据分析过程中,很多时候我们需要从数据表中提取出我们需要的部分,而这么做的前提是我们需要先索引出这一部分数据.今天我们就来探索一下,如何在pandas中使用loc函数和iloc函数索引数据. 今天我 ...

  7. python队列怎么用_如何在Python中使用多处理队列? - python

    我很难理解多处理队列如何在python上工作以及如何实现它.假设我有两个python模块,它们从共享文件中访问数据,我们将这两个模块称为writer和Reader.我的计划是让读取器和写入器都将请求放 ...

  8. python字符串筛选输出_如何在Python中过滤字符串列表

    Python使用列表数据类型在顺序索引中存储多个数据.它的工作方式类似于其他编程语言的数字数组.filter()方法是Python的一种非常有用的方法.可以使用filter()方法从Python中的任 ...

  9. python绘图背景透明_如何在 Matplotlib 中更改绘图背景

    介绍Matplotlib是Python中使用最广泛的数据可视化库之一.无论是简单还是复杂的可视化项目,它都是大多数人的首选库.在本教程中,我们将研究如何在Matplotlib中更改绘图的背景.导入数据 ...

  10. python获取当前时间戳_如何在Python中获取当前时间戳?

    在Python中可以使用来自模块time.datetime或calendar的函数来获取当前时间戳,代码语句如[import time;ts = time.time() print(ts)]. 在Py ...

最新文章

  1. 【SQL Server】系统学习之三:逻辑查询处理阶段-六段式
  2. 同步控制 之“重入锁”
  3. 测试新版FCKeditor编辑器精简版
  4. Python小游戏(并夕夕版飞机大战)
  5. PHPCMS后台框架实现思路
  6. 01Struts 2
  7. 在gitlab 中使用webhook 实现php 自动部署git 代码
  8. python 艺术照片滤镜_Python实现PS滤镜Fish lens图像扭曲效果示例
  9. 排序算法之——三路快排分析
  10. Anaconda 安装 OpenCV 遇到的问题
  11. android:digits 代码设置,EditText中android:digits失效问题
  12. PHP 接收 UDP包_常用的抓包工具包含电脑端及手机端
  13. oracle建表语句 货币,Oracle建表语句是什么
  14. MongoDB索引原理
  15. Python3官方手册中文在线版
  16. Keil 5报错error C216: subscript on non-array or too many dimensions
  17. LORA无线远传水表适者生存
  18. seo网站优化的金字塔模型
  19. 如何使用python实现简单爬取网页数据并导入MySQL中的数据库
  20. 致远OA表单自定义函数(计算N年后今天的日期 )

热门文章

  1. Delphi用ini文档实现界面无闪烁多语言转换
  2. 艾伟:WCF从理论到实践(2):决战紫禁之巅
  3. eclipse maven访问maven私有库
  4. 微信企业号让IOS不要识别数字为电话号码的方法
  5. linux packet socket,linux Packet socket (1)简单介绍
  6. mysql proxy 主从_【MYSQL知识必知必会】MySQL主从复制读写分离(基于mysql-proxy实现)...
  7. NM的完整形式是什么?
  8. python中locked_Python锁类| 带示例的locked()方法
  9. Python | 从用户输入数据,保存到文件,读取并打印
  10. snmp 获得硬件信息_计算机网络基础课程—简单网络管理协议(SNMP)