美文网首页
plotly展示样品表达量聚类热图

plotly展示样品表达量聚类热图

作者: MR来了 | 来源:发表于2020-12-29 11:21 被阅读0次

    这是根据plotly官网的一个例子进行相关修改:

    输入输出说明

    画图数据
    DesignElementAccession    r14 h45 c11 r11 c07 ...                                                  
    1053_at  6.373977  6.498170  6.271771  6.092041  6.095927    ...
    117_at  5.986182  4.861167  5.566699  5.590227  5.442939    ...   
    121_at  7.468118  6.947996  6.943584  7.536698  6.891398    ...   
    1255_g_at  4.495150  4.485995  3.671166  3.934822  3.731431    ...   
    1294_at  6.474134  5.935137  6.053127  6.626716  6.047488    ...
    
    样品表达量聚类热图

    横坐标是样品,纵坐标是表达量


    newplot.png
    代码
    import pandas as pd
    import plotly.graph_objects as go
    import plotly.figure_factory as ff
    
    df  = pd.read_table('ExpRawDataETABM84AAFFY44.tab')
    df  = df.set_index('DesignElementAccession')
    df  = df.head(10) ## 表达量
    dft = df.T        ## 样品
    
    #fig = ff.create_dendrogram(df, orientation='right', labels=df._stat_axis.values.tolist())
    
    # Initialize figure by creating upper dendrogram
    fig = ff.create_dendrogram(dft, orientation='bottom', labels=dft._stat_axis.values.tolist())
    fig.update_layout(plot_bgcolor = '#FFFFFF')
    for i in range(len(fig['data'])):
        fig['data'][i]['yaxis'] = 'y2'
    
    # Create Side Dendrogram, 设置右边树图
    dendro_side = ff.create_dendrogram(df, orientation='left', labels=df._stat_axis.values.tolist())
    #dendro_side.update_layout(yaxis=dict(side = "left"))
    
    for i in range(len(dendro_side['data'])):
        dendro_side['data'][i]['xaxis'] = 'x2'
    
    # Add Side Dendrogram Data to Figure
    for data in dendro_side['data']:
        fig.add_trace(data)
    
    fig['layout']['yaxis'] = dendro_side['layout']['yaxis']
    
    heatmap = [
        go.Heatmap(
            z= df,
            x= df.columns.values, ## 列名
            y= df._stat_axis.values.tolist(), ## 行名
            hoverongaps = False,
            colorbar=dict(x=-0.3, xanchor='left') ## 控制colorbar的位置
        )
    ]
    heatmap[0]['x'] = fig['layout']['xaxis']['tickvals']
    heatmap[0]['y'] = dendro_side['layout']['yaxis']['tickvals']
    
    # Add Heatmap Data to Figure
    for data in heatmap:
        fig.add_trace(data)
    
    # Edit Layout
    fig.update_layout({'width':800, 'height':600,
                       'showlegend':False, 'hovermode': 'closest',})
    
    # Edit xaxis, 设置热图的 x 轴
    fig.update_layout(xaxis={'domain': [0, 0.87],
                                      'mirror': False,
                                      'showgrid': False,
                                      'showline': False,
                                      'zeroline': False,
                                      'ticks':""})
    
    # Edit xaxis2, 控制左边树的x 轴
    fig.update_layout(xaxis2={'domain': [0.87, .975],
                                       'mirror': False,
                                       'showgrid': False,
                                       'showline': False,
                                       'zeroline': False,
                                       'showticklabels': False,
                                       'ticks':""})
    
    # Edit yaxis
    fig.update_layout(yaxis={'domain': [0, .87],
                                      'mirror': False,
                                      'showgrid': False,
                                      'showline': False,
                                      'zeroline': False,
                                      'showticklabels': True,
                                      'side': "left",
                                      'ticks': ""})
    
    # Edit yaxis2, 控制上面树图的 Y轴
    fig.update_layout(yaxis2={'domain':[.87, .975],
                                       'mirror': False,
                                       'showgrid': False,
                                       'showline': False,
                                       'zeroline': False,
                                       'showticklabels': False,
                                       'ticks':""})
    
    
    fig.show()
    

    相关文章

      网友评论

          本文标题:plotly展示样品表达量聚类热图

          本文链接:https://www.haomeiwen.com/subject/lgxtoktx.html