Plotly:如何创建包含下拉菜单的多面条形图?

问题描述 投票:1回答:1

我有以下数据框

import pandas as pd
df = pd.DataFrame({'var1':[0.2, 0.3, 0.4, 0.5, 0.6], 'var2': [1.2, 1.3, 1.4, 1.5, 1.6],
                   'facet_var': ['sd_1', 'sd_1', 'ctrl_1', 'ctrl_1', 'ctrl_1'],
                   'value_facet': ['a', 'b', 'a','b','c']})

我想创建一个html,其中barplotsvar1var2(从下拉菜单中选择)的面为facet_var。条形图的x_values将是value_facetheightbarplots将是var1var2,具体取决于从下拉菜单中的选择

任何想法如何使用plotly做类似的事情?

python python-3.x plotly plotly-python
1个回答
0
投票

您要问的内容很可能是完全可行的,但您的问题中有很多令人困惑的要素。问题标题为Histogram,但是您在谈论问题本身的barplots。此外,术语facets使[I0]等价。 plotly.express (px)最适合长格式的数据。而且,由于提供的列具有pxvar1的唯一值,因此您提供了更为宽泛的数据集:

var2

而且这是通常更适合 var1 var2 facet_var value_facet 0 0.2 1.2 sd_1 a 1 0.3 1.3 sd_1 b 2 0.4 1.4 ctrl_1 a 3 0.5 1.5 ctrl_1 b 4 0.6 1.6 ctrl_1 c 的格式。在这种情况下,我们更有可能谈论plotly.graph_objects (g0),而不是subplots。还有一件事情。数据集中的维数并不能完全证明多面条形图的合理性。这意味着您可以使用像facets

这样的分组多面条形图来完全可视化数据集的所有维度。

图1:

所有数据尺寸,但无下拉列表

px.bar(df, x='value_facet', y='value', color='variable', facet_col='facet_var')

但是要回答您的问题,假设您不希望使用直方图(带有二进制值),而是使用带下拉菜单的条形图

,下面的代码段将为下拉菜单中的enter image description herevar1选项:

图2:

var2

var1

图3:

enter image description here

var2

下面完整的代码片段中特别重要的一行是:

enter image description here

这会将数据集从您提供的半宽格式转换为更适合df=pd.melt(df, id_vars=['facet_var', 'value_facet'], value_vars=['var1', 'var2']) 的长格式数据:

px

完整代码:

    facet_var   value_facet variable    value
0   sd_1        a           var1    0.2
1   sd_1        b           var1    0.3
2   ctrl_1      a           var1    0.4
3   ctrl_1      b           var1    0.5
4   ctrl_1      c           var1    0.6
5   sd_1        a           var2    1.2
6   sd_1        b           var2    1.3
7   ctrl_1      a           var2    1.4
8   ctrl_1      b           var2    1.5
9   ctrl_1      c           var2    1.6
© www.soinside.com 2019 - 2024. All rights reserved.