【发布时间】:2021-11-30 05:57:18
【问题描述】:
我有一个 3 维绘图,我可以使用下面编写的代码来绘制它。
考虑到我的点分布由 100x100 矩阵表示,是否可以在我的数据上绘制置信区间?在下面的代码中,我的数据称为“结果”,而我要显示的上限和下限称为“上界”和“下界”。
例如,我问是否存在这样的东西,但是在 3 维中(而不是像下图那样的 2 维)
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
interval = np.random.normal(0, 1, size=(100, 100))
x = np.arange(0.1,1.1,0.01)
y = np.linspace(-np.pi,np.pi,100)
X,Y = np.meshgrid(x,y)
result = []
for i,j in zip(X,Y):
result.append(np.log(i)+np.sin(j))
upper_bound = np.array(result)+interval
lower_bound = np.array(result)-interval
fig = plt.figure()
fig.set_figwidth(20)
fig.set_figheight(6)
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, np.array(result))
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
【问题讨论】:
-
为什么你的区间是随机变量?在您的 2d 示例中,它是常量。如果它在 3d 中也保持不变,您可以简单地绘制 3 个曲面。
-
@kubatucka 嗨!感谢您的回答.. 我调用“interval = np.random.normal(0, 1, size=(100, 100))”只是为了给出一个维度为 100x100 的数组,因为我生成这个数组 100x100 的原始代码是非常非常长,所以只是有一些数据来创建一个情节
-
如果你的间隔是恒定的,你可能只想在你的线上画一个圆柱体,比如:stackoverflow.com/questions/26989131/add-cylinder-to-plot
标签: python numpy matplotlib multidimensional-array numpy-ndarray