首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用距离滑翔机改变火山图的genomewideline_value

如何用距离滑翔机改变火山图的genomewideline_value
EN

Stack Overflow用户
提问于 2022-03-21 09:06:17
回答 1查看 62关注 0票数 0

我正试图绘制一个火山图,并且我想根据Range Slider值来更改genomewideline_value,但是它不起作用。下面是我的示例代码:

代码语言:javascript
复制
import pandas as pd
import dash
from dash.dependencies import Input, Output
import dash_bio as dashbio
from dash import html, dcc

app = dash.Dash(__name__)
df = pd.read_csv('https://git.io/volcano_data1.csv')
app.layout = html.Div([
    'Effect sizes',
    dcc.RangeSlider(
        id='default-volcanoplot-input',
        min=-3,
        max=3,
        step=0.05,
        marks={i: {'label': str(i)} for i in range(-3, 3)},
        value=[-0.5, 1]
    ),
    dcc.RangeSlider(
        id='default-volcanoplot-input-2',
        min=-3,
        max=3,
        step=0.05,
        marks={j: {'label': str(j)} for j in range(-3, 3)},
        value=[0.5]
    ),    
    html.Br(),
    html.Div(
        dcc.Graph(
            id='dashbio-default-volcanoplot',
            figure={}
            )
        )
])

@app.callback(
    Output('dashbio-default-volcanoplot', 'figure'),
    [Input('default-volcanoplot-input', 'value'),
    Input('default-volcanoplot-input-2', 'value')]
)
def update_volcanoplot(effects,effects_2):
    return dashbio.VolcanoPlot(
        dataframe=df,
        effect_size='EFFECTSIZE', 
        logp=True,
        p='P', 
        snp=None,
        gene='GENE',
        genomewideline_value=effects_2,
        genomewideline_width = 1,
        effect_size_line=effects,
        effect_size_line_width = 1,
        xlabel='log2 Fold Change', 
        ylabel='-(p-adjusted)')

if __name__ == '__main__':
    app.run_server(debug=False)

在运行此代码时,出现了如下错误:ValueError: ('Lengths must match to compare', (9934,), (1,))

如果我将genomewideline_value=effects_2更改为genomewideline_value=0.5,它工作得很好,但我不能通过滑块改变它。

在这种情况下我该怎么办。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-22 03:35:12

我不使用偶发或Dash,但我想我在运行代码时注意到的是,genomewideline_value只接受单个值,而不是接受范围值。如果我将它从一个范围滑块更改为一个下拉滑块,则更改是按照预期进行的。我已经在Colab环境中测试过jupyter_dash模块,所以请为您的环境修改它。

代码语言:javascript
复制
import pandas as pd
import dash
from dash.dependencies import Input, Output
import dash_bio as dashbio
from dash import html, dcc

#app = dash.Dash(__name__)
app = JupyterDash(__name__)

df = pd.read_csv('https://git.io/volcano_data1.csv')
#print(df)

app.layout = html.Div([
    'Effect sizes',
    dcc.RangeSlider(
        id='default-volcanoplot-input',
        min=-3,
        max=3,
        step=0.05,
        marks={i: {'label': str(i)} for i in range(-3, 3)},
        value=[-0.5, 1]
    ),
    dcc.Dropdown(id='volcanpplot_dp',
                 options=[0,1,2,3,4,5,6,7,8],
                 value=4        
    ),
    html.Br(),
    html.Div(
        dcc.Graph(
            id='dashbio-default-volcanoplot',
            figure=dashbio.VolcanoPlot(
                dataframe=df
            )
        )
    )
])

@app.callback(
    Output('dashbio-default-volcanoplot', 'figure'),
    [
     Input('default-volcanoplot-input', 'value'),
     Input('volcanpplot_dp', 'value')
     ]
)
def update_volcanoplot(effects, effects2):
    return dashbio.VolcanoPlot(
        dataframe=df,
        point_size=8,
        genomewideline_value=effects2,
        genomewideline_width=2,
        effect_size_line=effects,
        effect_size_line_width=2,
    )

if __name__ == '__main__':
    app.run_server(debug=True, mode='inline')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71555081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档