python绘制直线的垂线_python - Python,Matplotlib:当数据独立时,在3d图中绘制垂直线 - 堆栈内存溢出...

我在(x,y)平面中有一个随机沃克,在(x,y,z)平面中有-log(双变量高斯)。 这两个数据集本质上是独立的。

我想对5个(x,y)随机助步器进行采样,并在z轴上绘制垂直线,并在其“满足”双变量高斯时终止垂直线。

到目前为止,这是我的代码:

import matplotlib as mpl

import matplotlib.pyplot as plt

import random

import numpy as np

import seaborn as sns

import scipy

from mpl_toolkits.mplot3d import Axes3D

from matplotlib.mlab import bivariate_normal

%matplotlib inline

# Data for random walk

def randomwalk():

mpl.rcParams['legend.fontsize'] = 10

xyz = []

cur = [0, 0]

for _ in range(40):

axis = random.randrange(0, 2)

cur[axis] += random.choice([-1, 1])

xyz.append(cur[:])

# Get density

x, y = zip(*xyz)

data = np.vstack([x,y])

kde = scipy.stats.gaussian_kde(data)

density = kde(data)

# Data for bivariate gaussian

a = np.linspace(-7.5, 7.5, 40)

b = a

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

Z = bivariate_normal(X, Y)

surprise_Z = -np.log(Z)

# Get random points from walker and plot up z-axis to the gaussian

M = data[:,np.random.choice(20,5)].T

# Plot figure

fig = plt.figure(figsize=(10, 7))

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

ax.plot(x, y, 'grey', label='Random walk') # Walker

ax.scatter(x[-1], y[-1], c='k', marker='o') # End point

ax.legend()

surf = ax.plot_surface(X, Y, surprise_Z, rstride=1, cstride=1,

cmap = plt.cm.gist_heat_r, alpha=0.1, linewidth=0.1)

#fig.colorbar(surf, shrink=0.5, aspect=7, cmap=plt.cm.gray_r)

for i in range(5):

ax.plot([M[i,0], M[i,0]],[M[i,1], M[i,1]], [0,10],'k--',alpha=0.8, linewidth=0.5)

ax.set_zlim(0, 50)

ax.set_xlim(-10, 10)

ax.set_ylim(-10, 10)

哪个产生

如您所见,我唯一要做的就是在垂直线达到适当的Z值时如何终止垂直线。 任何想法都欢迎!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值