matplotlib 将恒定x、y、z线添加到3D散点图中

ttygqcqt  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(174)

我想在matplotlib的3D散点图中添加恒定的x,y,z线,从这个极限点扩展,我可以知道如何做到这一点吗?

x_limit = [-0.5]
y_limit = [151]
z_limit = [1090]

示例代码:

import matplotlib.pyplot as plt        
from mpl_toolkits.mplot3d import Axes3D        
import numpy as np     
import pandas as pd   
from scipy.stats import multivariate_normal

fig = plt.figure(figsize=(8,8)) # size 4 inches X 4 inches     
ax = fig.add_subplot(111, projection='3d') 

np.random.seed(42)     
xs = np.random.random(100)*-0.8   
ys = np.random.random(100)*300   
zs = np.random.random(100)*10500   

plot = ax.scatter(xs,ys,zs)   

ax.set_title("3D plot with limit")    
ax.set_xlabel("x")   
ax.set_ylabel("y")    
ax.set_zlabel("z")    

x_limit = [-0.5]    
y_limit = [151]    
z_limit = [1090]

ax.scatter(x_limit, y_limit, z_limit, c = 'g', marker = "s", s = 50)    

plt.show()
92vpleto

92vpleto1#

这段代码应该可以。不过,有几件重要的事情需要注意。首先,创建的网格栅格之所以有效,是因为三个轴中的每个轴共享相同的限制。其次,虽然x_limit和y_limit值作为XY参数工作,但似乎Z参数应该具有更高的维度(因此我使用full_like来填充与x_1x_2相同形状的数组,并使用Z限制)。

x_1, x_2 = np.meshgrid(np.arange(0, 1.1, 0.1), np.arange(0, 1.1, 0.1))
ax.plot_surface(x_limit, x_1, x_2, color='r', alpha=0.5)
ax.plot_surface(x_1, y_limit, x_2, color='g', alpha=0.5)
ax.plot_surface(x_1, x_2, np.full_like(x_1, z_limit), color='b', alpha=0.5)

相关问题