我不是科学家,所以请假设我不知道有经验的程序员的行话,或者科学绘图技术的复杂性.

Python是我所知道的唯一语言(初学者,也许是中级).

任务:将多元回归的结果(z = f(x,y))绘制为3D图形上的二维平面(例如,我可以使用OSX的图形工具,或者在此使用R实现Plot Regression Surface).

经过一周搜索Stackoverflow并阅读matplotlib,seaborn和mayavi的各种文档后,我终于找到了Simplest way to plot 3d surface given 3d points,听起来很有希望.所以这是我的数据和代码:

首先尝试使用matplotlib:

shape: (80, 3)

type:

zmul:

[[ 0.00000000e+00 0.00000000e+00 5.52720000e+00]

[ 5.00000000e+02 5.00000000e-01 5.59220000e+00]

[ 1.00000000e+03 1.00000000e+00 5.65720000e+00]

[ 1.50000000e+03 1.50000000e+00 5.72220000e+00]

[ 2.00000000e+03 2.00000000e+00 5.78720000e+00]

[ 2.50000000e+03 2.50000000e+00 5.85220000e+00]

……]

import matplotlib

from matplotlib.ticker import MaxNLocator

from matplotlib import cm

from numpy.random import randn

from scipy import array, newaxis

Xs = zmul[:,0]

Ys = zmul[:,1]

Zs = zmul[:,2]

surf = ax.plot_trisurf(Xs, Ys, Zs, cmap=cm.jet, linewidth=0)

fig.colorbar(surf)

ax.xaxis.set_major_locator(MaxNLocator(5))

ax.yaxis.set_major_locator(MaxNLocator(6))

ax.zaxis.set_major_locator(MaxNLocator(5))

fig.tight_layout()

plt.show()

我得到的是一个空的3D坐标框架,其中包含以下错误消息:

RuntimeError:qhull Delaunay三角测量计算中的错误:奇异输入数据(exitcode = 2);使用python verbose选项(-v)来查看原始的qhull错误.

第二次尝试使用mayavi:

相同的数据,分为3个numpy数组:

type:

X: [ 0 500 1000 1500 2000 2500 3000 ….]

type:

Y: [ 0. 0.5 1. 1.5 2. 2.5 3. ….]

type:

Z: [ 5.5272 5.5922 5.6572 5.7222 5.7872 5.8522 5.9172 ….]

码:

from mayavi import mlab

def multiple3_triple(tpl_lst):

X = xs

Y = ys

Z = zs

# Define the points in 3D space

# including color code based on Z coordinate.

pts = mlab.points3d(X, Y, Z, Z)

# Triangulate based on X, Y with Delaunay 2D algorithm.

# Save resulting triangulation.

mesh = mlab.pipeline.delaunay2d(pts)

# Remove the point representation from the plot

pts.remove()

# Draw a surface based on the triangulation

surf = mlab.pipeline.surface(mesh)

# Simple plot.

mlab.xlabel("x")

mlab.ylabel("y")

mlab.zlabel("z")

mlab.show()

我得到的就是:

如果这很重要,我在OSX 10.9.3上使用64位版本的Enthought’s Canopy

对于我做错了什么的输入,将不胜感激.

编辑:发布有效的最终代码,以防有人帮助.

'''After the usual imports'''

def multiple3(tpl_lst):

mul = []

for tpl in tpl_lst:

calc = (.0001*tpl[0]) + (.017*tpl[1])+ 6.166

mul.append(calc)

return mul

fig = plt.figure()

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

'''some skipped code for the scatterplot'''

X = np.arange(0, 40000, 500)

Y = np.arange(0, 40, .5)

X, Y = np.meshgrid(X, Y)

Z = multiple3(zip(X,Y))

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=cm.autumn,

linewidth=0, antialiased=False, alpha =.1)

ax.set_zlim(1.01, 11.01)

ax.set_xlabel(' x = IPP')

ax.set_ylabel('y = UNRP20')

ax.set_zlabel('z = DI')

ax.zaxis.set_major_locator(LinearLocator(10))

ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

python三维图怎么显示_如何在python中绘制多个回归3D图相关推荐

  1. 表格在整个html居中显示,html 表格字符居中显示_如何在HTML中居中显示表格?

    html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示 HTML table provides the ab ...

  2. xmind可以画流程图吗_如何在XMind 中绘制流程图?

    XMind 是专业强大的思维导图软件,由于其结构没有任何限制,很多朋友特别喜欢用它来绘制流程图.那么,就出现这样一个问题,如何在 XMind 中绘制流程图?下面就和小编一起来看看吧! 如何在 XMin ...

  3. python三维图视角旋转_如何在python中旋转3d图? (或作为动画)使用鼠标旋转三维视图...

    我有这段代码,其中包含一个3D图.我在Spyder中运行代码;我想知道是否可以使这个绘图旋转(360度)并保存. 谢谢! P.s.对不起,如果这是一个愚蠢的问题,但我是Python的newby.如何在 ...

  4. python画图修改背景颜色_如何在 Matplotlib 中更改绘图背景的实现

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

  5. 如何用python画一束花_如何在AI里绘制一束春天的花朵

    What You'll Be Creating 春天正在到来,是的,不管暴风雪如何肆意狂虐.很快,我们将看到第一波花朵盛开.让我们试着在画板上复刻春天之美吧~ 在此教程中,你将会学习如何创建特殊的画笔 ...

  6. python怎么字体加阴影_如何在pythonptx中给文本添加阴影?

    我正在做一个项目,我必须用pythonptx创建一个PowerPoint.我需要添加有阴影的文本,使其显示如下: 如何在pythonptx中使用阴影格式化文本?在 下面是我使用的代码:from ppt ...

  7. python 参数个数 同名函数_如何在python中编写不同参数的同名方法

    我在Java背景下学习Python(3.x). 我有一个python程序,我在其中创建一个personObject并将其添加到列表中.p = Person("John") list ...

  8. python实现随机抽取答题_如何在python中实现随机选择

    这篇文章主要介绍了如何在python中实现随机选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 想从一个序列中随机抽取若干元素,或者想生成几个随机 ...

  9. autocad 如何摆正显示_如何在 VB 中连接 AutoCAD

    1.如何在 VB 中连接 AutoCAD. 启动 VB ,引用 AutoCAD 类型库.操作步骤:从"工程"菜单中选择"引用"选项,启动"引用&quo ...

最新文章

  1. codeforces 940D 比赛总结
  2. rabbitmq消费固定个数消息_SpringBoot+RabbitMQ (保证消息100%投递成功并被消费)
  3. 快速双边滤波在High-Dynamic Range(HDR)图像显示中的应用。
  4. html标签自动对齐,sublime,jsx里的html标签自动缩进对齐的插件或者配置?
  5. ubantu自启脚本
  6. ASP.NET Core on K8S深入学习(9)Secret Configmap
  7. java正则表达式用法示例_Java正则表达式教程及示例
  8. Android 功耗(10)---电流波形图(power monitor)
  9. java21天打卡-day2
  10. 十八年开发经验分享(四)问题解决篇(下)
  11. no active checks on server [192.168.1.107:10051]: host [ ] not found
  12. Spark性能优化指南——高级篇【2】
  13. [计算机组成原理-02] 计算机硬件的基本组成和工作原理
  14. 模拟器游戏修改之教你如何修改gba rom里的程序!
  15. java计算机毕业设计大数据在线考试系统在线阅卷系统及大数据统计分析(附源码、数据库)
  16. 新的服务器装系统前怎么分区吗,新硬盘使用之前要如何分区?硬盘分区常用方法详解...
  17. 盘点Google在2011年的重要收购
  18. html 怎么在背景图片上添加内容,css 如何在一个背景图片的中间添加文字呢?
  19. 在Excel中使用SQL语句实现数据处理
  20. LOJ10155 一本通1577 数字转换 题解

热门文章

  1. ORA-01403: no data found
  2. oVirt guest | VM HOST HA in one Cluster
  3. SYNCHRONIZE_DRAIN
  4. Revit二次开发之“让对象处于被选择状态”
  5. DedeCMS V5.7模块MVC框架基本说明
  6. 关于iconfont的一些东西
  7. OO第一单元总结——多项式求导
  8. 新手C#面向对象的学习2018.08.06
  9. Jasper报表 自动序列号
  10. 又回来了~工作告一段落了,终于有时间看书写点东西了