如何在plotly.figure_factory中设置create_dendrogram的distfun
我在 create_dendrogram
in plotly.figure_factory
中绘制树状图时遇到一些困难。
默认的linkageFun( linkageFun
)是完整
,距离函数的默认设置( distfun
)为 scs.distance.pdist 代码>
但是我想要的设置是 jaccard
distfun
, for
for linke> linking> linking> linke> linkagefun
:
我想要的设置以下显示:
import pandas as pd
import numpy as np
from scipy.spatial.distance import pdist
import matplotlib.pyplot as plt
import scipy.cluster.hierarchy as such
plt.figure(figsize = (10, 10))
disMat = sch.distance.pdist(df, metric='jaccard')
disMat1 = sch.distance.squareform(disMat)
Z=sch.linkage(disMat1,method='average')
Dend=sch.dendrogram(Z,orientation='right')
plt.tick_params(
axis='y',
which='both',
direction='in',
left=False,
right=False,
labelleft=False)
我注意到 linkageFun
可以通过 linkefun = lambda x:sch.linkage(x,'faluse')
设置,但是 distFun
无法通过 distfun ='jaccard'
设置,我不知道如何设置此功能。
fig = create_dendrogram(df, orientation='left',
labels=df.index,
distfun='jaccard',
linkagefun=lambda x: sch.linkage(x, 'average'))
fig.show()
下面的DF集的示例:
import pandas as pd
df = pd.DataFrame({'1-7':[0,0,1,1,0,1,1],'1-2':[1,0,1,0,0,1,1],'2-3':[1,0,0,0,1,1,0],'2-2':[0,1,0,1,0,1,1],'1-1':[1,0,0,1,0,1,0],'1-3':[0,1,1,1,0,0,0],'1-5':[0,1,0,1,1,0,1]},index=['a','b','c','d','e','f','g'])
由于我需要Dash在网页上绘制图形,因此我似乎必须在Plotly中使用 create_dendrogram
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以从
functions
中使用partial
来“冻结”scipy.spatial.distance.pdist.pdist
指定距离度量的参数。然后将部分函数用作
DistFun
的输入:You can use
partial
fromfunctools
to "freeze" the parameter ofscipy.spatial.distance.pdist
that specifies the distance metric.Then use the partial function as the input for
distfun
: