Python 使用plotly为三维散点图设置悬停距离 #点大小=10 pca_dims=3 title_wrap=40 data=self.vectorize(df[“摘录”].tolist()) #降维(3个主成分)。 pca=pca(n\u组件=pca\u dims) pca.fit(数据) 新值=pca.transform(数据) #创建新列以存储新标注值。 df.loc[:,“x”]=新的_值[:,0] df.loc[:,“y”]=新的_值[:,1] df.loc[:,“z”]=新的_值[:,2] df.loc[:,“大小”]=1 #为悬停文本中的格式化标题创建额外列。 df.loc[:,“title\u format”]=df[“title”].str.wrap(title\u wrap)。应用( lambda x:x.replace('\n','')) 图=px.散射(df,x=“x”,y=“y”,z=“z”, color=“keyword”,size=“size”,size\u max=30,hover\u name=“title\u format”, hover_data={“size”:False,“keyword”:False,“x”:False,“y”:False,“z”:False}, 标签={“关键字”:“搜索关键字”}, 自定义_数据=[“摘录”、“标题”、“id”], ) 图更新布局(hovermode='closest',hoverdistance=1000)

Python 使用plotly为三维散点图设置悬停距离 #点大小=10 pca_dims=3 title_wrap=40 data=self.vectorize(df[“摘录”].tolist()) #降维(3个主成分)。 pca=pca(n\u组件=pca\u dims) pca.fit(数据) 新值=pca.transform(数据) #创建新列以存储新标注值。 df.loc[:,“x”]=新的_值[:,0] df.loc[:,“y”]=新的_值[:,1] df.loc[:,“z”]=新的_值[:,2] df.loc[:,“大小”]=1 #为悬停文本中的格式化标题创建额外列。 df.loc[:,“title\u format”]=df[“title”].str.wrap(title\u wrap)。应用( lambda x:x.replace('\n','')) 图=px.散射(df,x=“x”,y=“y”,z=“z”, color=“keyword”,size=“size”,size\u max=30,hover\u name=“title\u format”, hover_data={“size”:False,“keyword”:False,“x”:False,“y”:False,“z”:False}, 标签={“关键字”:“搜索关键字”}, 自定义_数据=[“摘录”、“标题”、“id”], ) 图更新布局(hovermode='closest',hoverdistance=1000),python,graph,plotly,plotly-python,Python,Graph,Plotly,Plotly Python,因此,本质上这里的问题是,无论是大小还是悬停距离字段都没有像我预期的那样工作。例如,(这只是因为我试图找出设置大小的原因)大小设置为1,这低于最大大小30,因此我希望绘图上的输出点大小为1,但它们没有,并且大小为30 hoverdistance的行为方式非常相似,我想将其设置为hoverdistance为0,这样只有当光标与点的至少一个像素重叠时,悬停才会激活。但是它从来没有工作过,所以我把它设置为一个疯狂的高数字,如上图所示,1000,它表现出了相同的行为。因此,plotly图形似乎(似乎只有

因此,本质上这里的问题是,无论是大小还是悬停距离字段都没有像我预期的那样工作。例如,(这只是因为我试图找出设置大小的原因)大小设置为1,这低于最大大小30,因此我希望绘图上的输出点大小为1,但它们没有,并且大小为30

hoverdistance的行为方式非常相似,我想将其设置为hoverdistance为0,这样只有当光标与点的至少一个像素重叠时,悬停才会激活。但是它从来没有工作过,所以我把它设置为一个疯狂的高数字,如上图所示,1000,它表现出了相同的行为。因此,plotly图形似乎(似乎只有大小和悬停距离字段,其他所有字段看起来都与预期的一样)采用了某些字段的默认值,尽管它们被另外指定

我还尝试过使用和不使用“hovermode='nestest'”,因为默认情况下它设置为最接近,只是想测试它是否有任何影响。此外,point_size变量当前未使用,因为我在尝试调试问题时直接将大小设置为1

我有点不明白为什么会发生这种情况,因为代码基本上与plotly在文档中给出的示例相同。我使用的主要文档页面链接如下:

谢谢

    #point_size = 10
    pca_dims   = 3
    title_wrap = 40

    data = self.vectorize(df["excerpt"].tolist())

    # Dimensionality reduction (3 principal components).
    pca = PCA(n_components = pca_dims)
    pca.fit(data)
    new_values = pca.transform(data)

    # Create new columns to store new dimensional values.
    df.loc[:,"x"]    = new_values[:,0]
    df.loc[:,"y"]    = new_values[:,1]
    df.loc[:,"z"]    = new_values[:,2]
    df.loc[:,"size"] = 1

    # Create extra column for formatted title in hover text.
    df.loc[:,"title_format"] = df["title"].str.wrap(title_wrap).apply(
                                    lambda x : x.replace('\n', '<br>'))

    fig = px.scatter_3d(df, x = "x", y = "y", z = "z",
        color = "keyword", size = 'size', size_max = 30, hover_name = "title_format",
        hover_data  = {"size" : False, "keyword" : False, "x" : False, "y" : False, "z" : False},
        labels      = {"keyword" : "Search Keywords"},
        custom_data = ["excerpt", "title", "id"],
    )
    fig.update_layout(hovermode='closest', hoverdistance=1000)