Plotly: как получить значения оси Y для сгруппированной гистограммы из вложенного dict? - PullRequest
1 голос
/ 06 мая 2020

Это мой последний словарь

{'1': {'Pen': [0.99], 'Note': [1.62]},
 '2': {'Pen': [1.94], 'Note': [2.17]}}

Я пытаюсь построить гистограмму группы, используя plotly в python Я получил свое значение x
[x for x in cdict.keys() for k,v in cdict.items()]

я невозможно правильно получить значения y.

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Попробуйте:

y_pen = [cdict[j]["Pen"][0] for j in cdict]
y_note = [cdict[j]["Note"][0] for j in cdict]

y_pen:

[0.99, 1.94]

y_note:

[1.62, 2.17]

0 голосов
/ 06 мая 2020

Мне кажется, что это то, что вы ищете:

enter image description here

Если это так, вам придется сделать list для значений x, таких как ['Pen', 'Note'], и получить список списков для значений y, например [[0.99, 1.94], [1.62, 2.17]].

Полный код:

# imports
import plotly.express as px
import plotly.graph_objs as go
import pandas as pd
import numpy as np

cdict = {'1': {'Pen': [0.99], 'Note': [1.62]},
         '2': {'Pen': [1.94], 'Note': [2.17]}}

# get x-values, in this case ['Pen', 'Note']
xVals = list([cdict[k].keys() for k in cdict.keys()][0])

# get y-values, in this case [[0.99, 1.94], [1.62, 2.17]]
yVals = []
for x in xVals:
    yVals.append([cdict[j][x][0] for j in cdict])

# set up plotly figure
fig=go.Figure()

# add trace for each element in yVals
for i, y in enumerate(yVals):
  fig.add_traces(go.Bar(x=xVals, y=y, name = 'Group'+str(i+1)))

fig.show()
...