如何为每个点绘制具有指定颜色的 3D 散点图
How to plot a 3D scatter graph with a specified color for everypoint
这个问题可能很愚蠢,但我找不到答案。我正在使用 python 并且我想绘制一个散点图,其中 x 的大小为 Nx,y 的大小为 Ny,z 的大小为 Nz 以及每个点的位置 (x[i] , y[j], z [k]) 我有一个强度 I[i,j,k],它是一个实数。
我想绘制此散点图,其中坐标 (x,y,z) 的每个点都有一种颜色,具体取决于强度
一个简单的方法是使用 pyplot.cm.get_cmap()
。下面的例子是二维的,我让你自己想办法。
from matplotlib import pyplot as plt
X = [1, 2, 3, 4]
Y = [1, 2, 2, 3]
# list-like of the intensities for each point
I = [2, 5, 7, 7]
# Create the colors
colors = plt.cm.get_cmap(None, len(list(set(I))))
colors_dict = dict()
count = 0
for elt in I:
if elt not in colors_dict.keys():
colors_dict[elt] = colors(count)
count += 1
else:
continue
f, ax = plt.subplots(1, 1)
for k, x in enumerate(X):
y = Y[k]
i = I[k]
dot_color = colors_dict[i]
ax.scatter(x, y, s = 15, color = dot_color)
很可能存在比上述方法更好的方法。
这个问题可能很愚蠢,但我找不到答案。我正在使用 python 并且我想绘制一个散点图,其中 x 的大小为 Nx,y 的大小为 Ny,z 的大小为 Nz 以及每个点的位置 (x[i] , y[j], z [k]) 我有一个强度 I[i,j,k],它是一个实数。
我想绘制此散点图,其中坐标 (x,y,z) 的每个点都有一种颜色,具体取决于强度
一个简单的方法是使用 pyplot.cm.get_cmap()
。下面的例子是二维的,我让你自己想办法。
from matplotlib import pyplot as plt
X = [1, 2, 3, 4]
Y = [1, 2, 2, 3]
# list-like of the intensities for each point
I = [2, 5, 7, 7]
# Create the colors
colors = plt.cm.get_cmap(None, len(list(set(I))))
colors_dict = dict()
count = 0
for elt in I:
if elt not in colors_dict.keys():
colors_dict[elt] = colors(count)
count += 1
else:
continue
f, ax = plt.subplots(1, 1)
for k, x in enumerate(X):
y = Y[k]
i = I[k]
dot_color = colors_dict[i]
ax.scatter(x, y, s = 15, color = dot_color)
很可能存在比上述方法更好的方法。