matplotlib 3D散点图中给定的alpha值列表与绘图结果不匹配

hyrbngr7  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(137)

我尝试在3D中可视化点的分类。当我给予散射函数中的“c”参数分类时,结果与预期的一样。但是当我给予与“alpha”参数完全相同的分类时,它似乎变成了噪音。
下面是一个正弦波的例子。(我缩放了alpha参数,以显示它只是噪声)

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['figure.facecolor'] = 'white'

# Orientation sampling
angles = range(0,360,10)
euler = np.array([[[[x,y,z] for z in angles] for y in angles] for x in angles])
euler = euler.reshape((-1,3))

# Make some classification
cls = np.abs(np.sin(euler.mean(1)))
print("min:", cls.min())
print("max:", cls.max())
print("mean:", cls.mean())

# visualize
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.scatter(euler[:,0],euler[:,1],euler[:,2], c=cls, s=5, alpha=1.0, cmap='viridis')
plt.show()

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.scatter(euler[:,0],euler[:,1],euler[:,2], c='b', s=5, alpha=cls**10/10)
plt.show()

字符串
输出量:

min: 0.0
max: 0.9999727218865074
mean: 0.6366588835775282


c=cls显示了一个很好的正弦波:


的数据
alpha=cls**10/10显示具有随机alpha值的点:



我希望在为alpha值分配分类时看到相同的模式。
我目前通过使用点大小来隐藏较低分类的点来解决这个问题。

b1zrtrql

b1zrtrql1#

目前还不清楚这是怎么回事。通常情况下,自matplotlib 3.4以来,alpha作为数组支持散点图,无论是2D还是3D。与c参数不同,它会自动转换为0 - 1的范围,alpha参数应该已经在正确的范围内。
不过,使用带有alpha值的色彩Map表也可以获得相同的效果。
下面是一个示例:

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap, to_rgba
import numpy as np

mpl.rcParams['figure.facecolor'] = 'white'

# Orientation sampling
angles = range(0, 360, 10)
euler = np.array([[[[x, y, z] for z in angles] for y in angles] for x in angles])
euler = euler.reshape((-1, 3))

# Make some classification
cls = np.abs(np.sin(euler.mean(1)))
# visualize
alpha_cmap = LinearSegmentedColormap.from_list('', ['b', to_rgba('b', alpha=0)])

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.scatter(euler[:, 0], euler[:, 1], euler[:, 2], c=cls, s=5, cmap=alpha_cmap)
plt.show()

字符串
x1c 0d1x的数据
由于这里使用了c参数,它会自动扩展到0到1的范围。您可以尝试使用vminvmax来更改范围。或者您可以在创建LinearSegmentedColormap时使用不同的较低alpha(可选地颠倒颜色的顺序)。

相关问题