【问题标题】:Plotting a series of 2D plots projected in 3D in a perspectival way以透视方式绘制一系列以 3D 方式投影的 2D 图
【发布时间】:2016-03-10 01:05:50
【问题描述】:

我想绘制一个似然分布,基本上是一个 NxT 矩阵,其中每一行代表每个时间步长中某个变量的分布 t (t=0...T) ,所以我可以可视化最大似然估计会产生的轨迹。

我想象几个 2D 图,一个在另一个前面 - 像这样:

目前基于this我已经尝试过:

def TrajectoryPlot(P):
    P=P[0:4]  
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    def cc(arg):
        return colorConverter.to_rgba(arg, alpha=0.6)
    xs = np.arange(0, len(P[0]))
    verts = []
    zs = [0.0, 1.0, 2.0, 3.0, 4.0]
    for i in range(len(P)):
        print(i)
        verts.append(list(zip(xs,  P[i])))    
    poly = PolyCollection(verts, facecolors=[cc('r'), cc('g'), cc('b'),
                                             cc('y')])
    poly.set_alpha(0.7)
    ax.add_collection3d(poly, zs=zs, zdir='y')
    ax.set_xlabel('X')
    ax.set_ylabel('Likelihood')
    ax.set_zlabel('Time')
    plt.show()

但这还不行。

【问题讨论】:

  • 你看过matplotlib gallery吗?具体来说,thisthis 的组合将满足您的需求。
  • 老实说我对matplotlib不太熟练,所以这些对我来说完全无法理解。据我所知,没有直接的方法可以做到这一点。
  • 到目前为止你尝试过什么?如果我是你,我会首先在与矩阵中的一个“行”相对应的普通 2D 轴上绘制一个图。如果您遇到特定问题,我愿意为您提供帮助,但 SO 不是代码编写服务。即使我愿意,我也无法给你一个完整的例子,因为你没有清楚地解释你的数据结构或情节应该代表什么。如果 matplotlib 对你来说真的“难以理解”,那么也许你应该从 one of the tutorials 开始。

标签: python matplotlib mplot3d


【解决方案1】:

fill_between 例程还返回一个PolyCollection 对象,因此您可以使用fill_between 并使用add_collection3d 添加它:

import matplotlib.pylab as pl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

x   = np.linspace(1,5,100)
y1  = np.ones(x.size)
y2  = np.ones(x.size)*2
y3  = np.ones(x.size)*3
z   = np.sin(x/2)

pl.figure()
ax = pl.subplot(projection='3d')
ax.plot(x, y1, z, color='r')
ax.plot(x, y2, z, color='g')
ax.plot(x, y3, z, color='b')

ax.add_collection3d(pl.fill_between(x, 0.95*z, 1.05*z, color='r', alpha=0.3), zs=1, zdir='y')
ax.add_collection3d(pl.fill_between(x, 0.90*z, 1.10*z, color='g', alpha=0.3), zs=2, zdir='y')
ax.add_collection3d(pl.fill_between(x, 0.85*z, 1.15*z, color='b', alpha=0.3), zs=3, zdir='y')

ax.set_xlabel('Day')
ax.set_zlabel('Resistance (%)')

【讨论】:

    猜你喜欢
    • 2013-11-09
    • 2018-05-03
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多