Простая пирамидальная диаграмма hbar с боке

Я пытаюсь создать очень простую диаграмму-пирамиду с горизонтальными полосами с эффектом боке, как в этот пример.

Результат, которого я пытаюсь достичь, выглядит следующим образом:

Простая пирамидальная диаграмма hbar с боке

Можно ли создать его с помощью простого дикта вроде этого:

data = {'A': [0.8, 0.85], 'B': [0.31, 0.28], 'C': [0.91, 0.88], 'D': [0.73, 0.78]}

Я не знаю, как мне подготовить свои данные, чтобы они соответствовали графику такого типа.

Это так? :

>>> df = pd.DataFrame([[0.8, 0.85], [0.31, 0.28], [0.91, 0.88], [0.73, 0.78]], index=['A', 'B', 'C', 'D'], columns=['label1', 'label2'])
>>> df
   label1  label2
A    0.80    0.85
B    0.31    0.28
C    0.91    0.88
D    0.73    0.78
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
384
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел свое решение, которое дало мне такой результат: pyramid result

Основываясь на примере Population.py из репозитория Bokeh Github, после включения import pandas as pd я изменил только следующий код:

gender_transform = CustomJSTransform(args=dict(source=ages), func = "", v_func = """
    var val = new Float64Array(xs.length)
    for (var i = 0; i < xs.length; i++) {
        if (source.data['Label'][i] == 'label1') # <--- This line only
            val[i] = -xs[i]
        else
            val[i] = xs[i]
    }
    return val
""")


groups = ['A', 'B', 'C', 'D']   # <--- Override the age group

pyramid = figure(plot_width=600, plot_height=500, toolbar_location=None, y_range=groups,
                 title = "label1 vs label2",
                 x_axis_label = "",y_axis_label = "", x_range=[-1, 1])
pyramid.hbar(y = "NameGrp", height=0.5, right=transform('Value', gender_transform),
             source=ages, legend = "Label", line_color = "white",
             fill_color=factor_cmap('Label', palette=["blue", "red"], factors=["label1", "label2"]))

И затем мои данные построены таким образом в методе update():

>>> ages = pd.DataFrame([['A', 'label1', 0.85], ['B', 'label1', 0.28], ['C', 'label1', 0.88], ['D', 'label1', 0.78], ['A', 'label2', 0.80], ['B', 'label2', 0.18], ['C', 'label2', 0.98], ['D', 'label2', 0.88]], columns=['NameGrp', 'Label', 'Value'])
>>>
  NameGrp   Label  Value
0       A  label1   0.85
1       B  label1   0.28
2       C  label1   0.88
3       D  label1   0.78
4       A  label2   0.80
5       B  label2   0.18
6       C  label2   0.98
7       D  label2   0.88

Другие вопросы по теме