何为聚类分析?

聚类分析指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程。它是一种重要的人类行为。

MATLAB、SPSS等商业软件包中具有聚类分析相关功能,在普通web编程中需要直接在我们程序中使用聚类分析又不想使用商业软件,python的plotly库是一个不错的选择。

聚类分析方法有层次聚类法、K-均值聚类法等,本文为python绘制层次聚类分析图。
层次聚类分析方法的基本思想是:通过某种相似性测度计算节点之间的相似性,并按相似度由高到低排序,逐步重新连接个节点。该方法的优点是可随时停止划分,主要步骤如下:

  1. 移除网络中的所有边,得到有n个孤立节点的初始状态;
  2. 计算网络中每对节点的相似度;
  3. 根据相似度从强到弱连接相应节点对,形成树状图;
  4. 根据实际需求横切树状图,获得社区结构。

安装plotly及相关依赖

0.安装python3环境

安装python3环境网络上资料比较多,请自行安装python3环境

1.安装plotly

pip3 install plotly

2.安装相关依赖

pip3 install pandas
pip3 install numpy

数据集

数据为csv文件(csv格式其实是:逗号分隔值文件格式,可以用记事本或excel打开),示例内容test.csv为:

完整代码

这里保存的文件名为:myPlotly.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-#import chart_studio
#chart_studio.tools.set_credentials_file(username='ectabv54319',api_key='jlVg40y0V512yrDBF1A9')import sys
import os
import pandas as pd
#import chart_studio.plotly as py
import plotly.figure_factory as ff
import numpy as np#数据集,csv格式
csvData="/opt/test.csv"
#输出的html文件路径
outFilePath="out-plotly.html"
#是否在浏览器中打开生成的html文件
autoOpenOnBrowser=False####function echo() start######
def echo( param,*args ):if len(args)==0:print(param)else:for var in args:if var=='':print(param,end='')else:print(param)
####function echo() end###################### help start ##########################
def _help():echo("Usage: %s [Options]" % (sys.argv[0]))echo("Options:")echo("    -?,-h,-help,--help \t :this help")echo("    -csv=csvPath \t :csvPath是数据集csv文件路径")echo("    -out=outHtmlPath \t :outHtmlPath是输出的html文件路径")
############### help end ##########################
############function: 汉化#######################
def toZhCN(saveFileName):with open(saveFileName, 'r+') as fo:filedata = fo.read(-1)if filedata.strip() == '':return Falsefiledata = filedata.replace('Download plot as a png','下载图片')filedata = filedata.replace('"Zoom"','"局部放大"')filedata = filedata.replace('"Pan"','"移动"')filedata = filedata.replace('Zoom in','放大')filedata = filedata.replace('Zoom out','缩小')filedata = filedata.replace('Autoscale','自动缩放')filedata = filedata.replace('Reset axes','重置')filedata = filedata.replace('Toggle Spike Lines','切换峰线')filedata = filedata.replace('Show closest data on hover','在悬停时显示最近的数据')filedata = filedata.replace('Compare data on hover','比较悬停数据')filedata = filedata.replace('"https://plotly.com/"','"#"')filedata = filedata.replace('Produced with Plotly','新窗口打开')filedata = filedata.replace('plotly-logomark','')try:fp=open(saveFileName,"w+",encoding="utf-8")fp.write(filedata)finally:fp.close()return True
###############func:createPlotly#############
def createPlotly():try:data = pd.read_csv(csvData)X = data[["频次"]]kwdlist = list(data["关键词"])kwdsize = len(kwdlist)fig = ff.create_dendrogram(X, orientation='left',labels=kwdlist)layoutHeight = round((kwdsize-40)/10)*100+800if kwdsize<=40:layoutHeight = 800fig['layout'].update({'width':800, 'height':layoutHeight})#py.plot(fig, filename='dendrogram_with_labels')#输出htmlfig.write_html(outFilePath, auto_open=autoOpenOnBrowser)#fig.show()if os.path.exists(outFilePath):toZhCN(outFilePath)echo("success")except:echo("error:" + sys.exc_info()[0])def main():global csvDataglobal outFilePathif sys.version < '3':echo("error:请使用Python3")sys.exit(0)argvlen=len(sys.argv)if argvlen==1:echo("error:参数不能为空,通过 %s -? 查看参数" % sys.argv[0])else:csvDataTmp=""outFilePathTmp=""showHelp=Falsefor ii in range(1,argvlen):paramData=sys.argv[ii]if paramData.startswith('-csv='):csvDataTmp=paramData[5:]elif paramData.startswith('-out='):outFilePathTmp=paramData[5:]elif paramData == '-?' or paramData == '-h' or paramData == '--help' or paramData == '-help' :showHelp=True_help()breakif not showHelp:if csvDataTmp and os.path.exists(csvDataTmp):csvData=csvDataTmpoutFilePath=outFilePathTmpcreatePlotly()else:echo("error:数据集不存在")if not outFilePathTmp:echo("error:输出的html文件路径不能为空")if __name__ == "__main__":main()

使用示例:

python3 myPlotly.py -csv=/opt/test.csv -out=/opt/test.html

生成的结果:

python绘制聚类分析树状图相关推荐

  1. Origin Pro绘制聚类分析树状图

    工作环境(蓝色粗体字为特别注意内容) 1.软件环境:Windows 7 Ultimate sp1.MatlabR2012b 32bit.OriginPro 2018C. 一般来说,Origin Pro ...

  2. Matlab绘制聚类分析树状图

    工作环境(蓝色粗体字为特别注意内容) 1.软件环境:Windows 7 Ultimate sp1.MatlabR2012b 32bit. 在使用Matlab做聚类分析的时候一般这样用: Y = pdi ...

  3. R语言绘制环形树状图

    R语言绘制环形树状图 1.主要用到dendextend和circlize包绘图: library(dendextend) library(circlize)# 距离矩阵 d <- dist(US ...

  4. MATLAB | 全网唯一,使用MATLAB绘制矩形树状图

    绘制效果 全网唯一这四个字我都快说腻了,请叫我绘图小天才,又双叒叕写了一个工具函数发到了MATHWORKS,矩形树状图主要用于直观展示各个元素的分类和占比. 编写不易点个赞叭~~ 基本使用 需要准备一 ...

  5. python画聚类树状图_影像组学学习笔记(36)-聚类树状图Dendrogram的python实现

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(36)主要介绍: 聚类树状图Dendrogram的python实现 应该注意一下scipy版本的问题:scipy 1.5.0版本画聚类树 ...

  6. 聚类分析树状图的初探

    参考官方文档:https://docs.scipy.org/doc/scipy/reference/index.html 此次使用聚类分析是因为文章需要,然后参考官方文档简单制作满足分析要求的树状图. ...

  7. python生成环形树状图-networkx

    一,项目简介: 利用networkx官方中的CircularTree案例,修改节点的名称,利用唐代诗人姓名与其诗作中的关键字生成的边,形成以诗人关键字为代表的三层环形树状图. 附上原官方的Circul ...

  8. R语言绘制矩形树状图

    #------------------------------------------------图7-3-2 树状图(a)-------------------------------------- ...

  9. 可视化神器Plotly绘制树状图

    大家好,我是Peter~ 今天给大家带来的是一篇关于Plotly绘图的文章:如何使用Plotly来绘制矩形树状图 Plotly文章 目前Plotly的文章更新到第17篇,推荐几篇文章: 闲聊 为什么P ...

  10. MATLAB | 绘图复刻(三) | 分层聚类分析图:树状图+热图

    好久不见啊,今天时绘图复刻第三期,这期画的比较难应该文章也不会太短... 前段时间发现公众号SCIPainter发布了一期名为<如何对基因和蛋白质的表达丰度进行相关性分析>,其中有一幅图很 ...

最新文章

  1. 【独家】一文读懂关联分析
  2. 网易发布云计算战略,“为解放程序员而来”
  3. 1 微信公众号开发 服务器配置 有什么用
  4. 【原创】开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式
  5. 深度缓冲区,RenderQueue、ZWrite和ZTest
  6. 微信小程序wx.request请求服务器json数据并渲染到页面
  7. 算法4中 1.4节示例中运行次数的讲解
  8. 参考文献空格怎么空_参考文献中的标点符号后要不要加空格
  9. VC2005项目属性配置
  10. 永中office linux卸载,永中office Linux版
  11. 轻松拥有自己的站内搜索引擎
  12. 如果忘记了学信网手机号可以试着这样找回
  13. 插了T管引流,该注意点啥
  14. BIGEMAP如何发布百度离线地图及二次开发API
  15. 用文本编辑器编译cs文件
  16. 关于前端在vue中实现‘距离某个时间点的倒计时’问题:设置了间隔计算时间,刚开始有停顿。
  17. linux全局搜索文件
  18. 经典残局html,微信欢乐斗地主3月残局1-100关全攻略 3月残局图文攻略大全
  19. 51单片机的频率计设计
  20. Python 构成三角形

热门文章

  1. 华为u2000 olt 添加成功,同步网元失败 提示 服务器不可达 解决办法
  2. docx4j 操作word中的chart
  3. 产品读书《产品经理面试攻略》
  4. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制 (转)
  5. UGUI 源码之 GridLayoutGroup
  6. 淘宝婴儿商品销量分析
  7. 双向链表、双向循环链表
  8. AutoCAD 经典
  9. openwrt中的mt7621、MAC存储、PPP、UCI、ubus
  10. Windows系统中常见的文件后缀名有哪些