首页 > 解决方案 > 当我设置标记大小或不透明度时,3D 散点不会显示在 Plotly 上

问题描述

我绘制了一个带有额外维度值的 3D 散点图。我试图通过颜色来区分这些点,但有些点足够接近以阻挡其他点。我想我可以通过使更高的值点更大或更不透明来解决这个问题。问题是当我将标记字典大小参数设置为值数组后,我将它们归一化后,图表上的点消失了。在不透明的情况下,我得到了一个错误。下面,我包含了用于规范化和绘图的代码。如果我将不透明度设置为像 0.8 这样的固定数字,这些点也会消失。这是什么原因?

我有一个名为stacked(列标题是'Y AXIS'、'X AXIS'、'INTENSITY'、'Z AXIS')的数据框。我用下面的行标准化。

maxi = stacked['INTENSITY'].max()
mini = stacked['INTENSITY'].min()

norms = []
for i in stacked['INTENSITY']:
    norm = float((i-mini)/(maxi-mini)) # multiplied by 12 for size
    print(norm)
    norms.append(norm)

stacked['INTENSITY'] = norms  
import plotly.graph_objects as go
import numpy as np

fig = go.Figure(data=[go.Scatter3d(
    x=stacked['X AXIS'],
    y=stacked['Y AXIS'],
    z=stacked['Z AXIS'],
    mode='markers',
    marker=dict(
    opacity = stacked['INTENSITY'] # size = stacked['INTENSITY']           
)])

fig.show()

我得到这个错误。

ValueError: 
    Invalid value of type 'pandas.core.series.Series' received for the 'opacity' property of scatter3d.marker
        Received value: 0      0.038302

标签: pythonplotly

解决方案


这是因为该opacity属性只接受标量值,而不接受向量/列表/数组,如x、或。此处参考文档:https ://plot.ly/javascript/reference/#scatter3d-marker-opacityyzsize

不幸的是,marker.color它不接受 alpha 值,所以目前似乎没有办法做你正在寻找的东西。


推荐阅读