Диаграмма кластеризованных столбцов с графиком Plotly plot в Python - PullRequest
0 голосов
/ 10 апреля 2020

Я кодирую сюжетно с python, но я действительно борюсь с ограниченной информацией, показанной на сюжетном сайте. Я пытаюсь построить выпадающее меню для моего сюжета с несколькими подзаговорами взаимозаменяемо. Я sh хочу иметь кластеризованную диаграмму столбцов для каждого раскрывающегося списка. Каждый из вспомогательных участков должен выглядеть примерно так, как показано ниже.


enter image description here

Ось X на приведенной выше диаграмме отображает уникальный age, от 0 до 90.


Тем не менее, моя текущая проблема - реализовать его с помощью выпадающего меню, и вместо этого ось x является категориальной, где в качестве оси x отображается только одно значение "f". .

Моя ось X "Тип пола" должна быть категоричной:

enter image description here

Данные, с которыми я работаю, требуют от меня построить несколько вспомогательных участков с отфильтрованными столбцами:

["SST_mud_mortar_stone", "SST_adobe_mud", "SST_timber", "SST_bamboo", "SST_cement_mortar_brick", "SST_mud_mortar_brick"]

Вот что я получаю вместо этого:

enter image description here

На сюжетном графике показана только одна категория из ['f', 'm', 'v', 'x', 'z'].

Это код, который я использовал в своей записной книжке Jupyter. Я действительно надеюсь, что то, что я могу изменить, чтобы вместо этого показать все категории на оси х , спасибо:

import plotly.graph_objects as go

import pandas as pd

# Initialize figure
fig = go.Figure()

SST_list = ["SST_mud_mortar_stone", "SST_adobe_mud", "SST_timber", "SST_bamboo", "SST_cement_mortar_brick", "SST_mud_mortar_brick"]

data = []

# Populate Graphs
for sst in SST_list:
    layout= go.Layout(title=sst,hovermode= 'closest')
    for i in range(0, 3):
        dgName = "Damage Grade " + str(i+1)
        dgLvl = building_clean[(building_clean['damage_grade']==(i+1)) & (building_clean[sst] == 1)]
        if sst == "SST_mud_mortar_stone":
            fig.add_trace(go.Bar(name=dgName, x=np.unique(building_clean['ground_floor_type']), y=dgLvl[sst].value_counts(), visible=True))
        else:
            fig.add_trace(go.Bar(name=dgName, x=np.unique(building_clean['ground_floor_type']), y=dgLvl[sst].value_counts(), visible=False))
fig.update_layout(
    updatemenus=[
        dict(
            active=0,
            buttons=list([
                dict(label="SST_mud_mortar_stone",
                     method="update",
                     args=[{"visible": [True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]},
                           {"title": "SST_mud_mortar_stone with Ground Floor Type",
                            "annotations": []}]),
                dict(label="SST_adobe_mud",
                     method="update",
                     args=[{"visible": [False, False, False, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False]},
                           {"title": "SST_adobe_mud with Ground Floor Type",
                            "annotations": []}]),
                dict(label="SST_timber",
                     method="update",
                     args=[{"visible": [False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, False, False, False]},
                           {"title": "SST_timber with Ground Floor Type",
                            "annotations": []}]),
                dict(label="SST_bamboo",
                     method="update",
                     args=[{"visible": [False, False, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False]},
                           {"title": "SST_bamboo with Ground Floor Type",
                            "annotations": []}]),
                dict(label="SST_cement_mortar_brick",
                     method="update",
                     args=[{"visible": [False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, False, False, False]},
                           {"title": "SST_cement_mortar_brick with Ground Floor Type",
                            "annotations": []}]),
                dict(label="SST_mud_mortar_brick",
                     method="update",
                     args=[{"visible": [False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True]},
                           {"title": "SST_mud_mortar_brick with Ground Floor Type",
                            "annotations": []}]),
            ]),
        )
    ]
)

# Set title
fig.update_layout(title_text="SST_mud_mortar_stone with Ground Floor Type")

fig.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...