使用 mplot3d 在 python 中绘制三个列表作为曲面图 [英] Plotting three lists as a surface plot in python using mplot3d

查看:55
本文介绍了使用 mplot3d 在 python 中绘制三个列表作为曲面图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有三个列表,分别是 X Y Z .每条数据都通过索引关联起来.

  X = [1,1,1,1,2,2,2,2,3,3,3,3]Y = [1,4,5,6,1,4,5,6,1,4,5,6]Z = [2,6,3,6,2,7,4,6​​,2,4,2,3]

X和Y列表仅包含3或4个唯一值-但是X和Y的每种组合都是唯一的,并且具有关联的Z值.

我需要使用 .plot_surface 生成表面图.我知道我需要为此创建一个 meshgrid ,但是鉴于我拥有包含重复数据的列表,因此我不知道如何生成该列表,因此保持Z列表的完整性至关重要.我也可以使用 tri_surf,因为它可以立即使用,但它并不是我所需要的.

我正在使用mplot3d库.

解决方案

鉴于数据集的分散性质,我建议使用 tri_surf .既然你说这不是 [你] 需要的",你的另一个选择是创建一个 meshgrid,然后

I have three lists, X,Y,Z. Each piece of data is associated by index.

X = [1,1,1,1,2,2,2,2,3,3,3,3]
Y = [1,4,5,6,1,4,5,6,1,4,5,6]
Z = [2,6,3,6,2,7,4,6,2,4,2,3]

The X and Y lists only contain 3 or 4 unique values - but each combination of X and Y is unique and has an associated Z value.

I need to produce a surface plot using .plot_surface. I know I need to create a meshgrid for this, but I don't know how to produce this given i have lists containing duplicate data, and maintaining integrity with the Z list is crucial. I could also use tri_surf as this works straight away, but it is not quite what I need.

I'm using the mplot3d library of course.

解决方案

Given the scattered nature of your data set, I'd suggest tri_surf. Since you're saying "it is not quite what [you] need", your other option is to create a meshgrid, then interpolate your input points with scipy.interpolate.griddata.

import numpy as np
import scipy.interpolate as interp
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

X = [1,1,1,1,2,2,2,2,3,3,3,3]
Y = [1,4,5,6,1,4,5,6,1,4,5,6]
Z = [2,6,3,6,2,7,4,6,2,4,2,3]

plotx,ploty, = np.meshgrid(np.linspace(np.min(X),np.max(X),10),\
                           np.linspace(np.min(Y),np.max(Y),10))
plotz = interp.griddata((X,Y),Z,(plotx,ploty),method='linear')

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(plotx,ploty,plotz,cstride=1,rstride=1,cmap='viridis')  # or 'hot'

Result:

这篇关于使用 mplot3d 在 python 中绘制三个列表作为曲面图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆