如何分别给散点图上色?

时间:2019-05-17 16:08:53

标签: python matplotlib plot 3d

我想通过以下方式绘制三个变量的函数。首先,我要用散点图在3d图形中绘制均匀分布的点,然后我想使用一种方法根据函数的值为立方体中的每个点着色。函数是f(x,y,z)=(x ^ 2 + y ^ 2-z ^ 2)^ 2。

到目前为止,我设法用小球均匀地填充该图,但是着色不起作用。我试图查找如何处理颜色图,但是结果要么是最基本的,要么是过于刻板。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np
import math as mt

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

# Make data.
X = np.linspace(-5, 5, 6)
Y = np.linspace(-5, 5, 6)
Z = np.linspace(-5, 5, 6)
X, Y, Z = np.meshgrid(X, Y, Z)
# Plot the surface.
t = (X**2+Y**2-Z**2)**2
surf = ax.scatter(X, Y, Z, c=t, cmap=cm.viridis)


ax.set_zlim(-5, 5)
ax.zaxis.set_major_locator(LinearLocator(5))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')

# Add a color bar which maps values to colors.
#fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

我认为即使没有错误我尝试的操作也不会起作用,因为没有处理颜色与点的配对。我考虑过使用图而不是散点图,但是我再一次没有在色图上找到任何有用的材料。

1 个答案:

答案 0 :(得分:0)

我和你所做的有三点不同

  1. 该函数更简单,因此我们可以目视检查散点图的正确性
  2. 我用StreamReader代替了ax.scatter3D
  3. 具有函数值的3D矩阵必须展平* {ax.scatter

这里是代码和情节

t.flatten()

scatter plot

请注意,为证明这些图层,我已经旋转了默认视图,并且Matplotlib也使用aerial perspective绘制点。