Plotly.js для аккуратных данных - Цвет столбика

Я новичок в plotly JS, но у меня есть хороший опыт работы с python - я хочу получить результаты, аналогичные следующим:

import plotly.express as px

long_df = px.data.medals_long()

fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input")
fig.show()

По сути, чтобы использовать значение данных для добавления отдельных цветов к моим барам, есть ли простой способ получить этот результат?

 <script>
                    $(document).ready(function(){
                            var xValue = {{ date|safe }};
                            var yValue = {{ revenue|safe }};
                            var stage = {{ stage|safe }};

                                var Forecast = {
                                  x: xValue,
                                  y: yValue,
                                  type: 'bar',
                                  text: yValue.map(String),
                                  textposition: 'auto',
                                  hoverinfo: 'none',
                                  name:'Leads',
                                  marker: {
                                    color: 'rgba(255, 99, 132, 0.2)',
                                    opacity: 0.8,
                                    line: {
                                      color: 'rgba(255, 99, 132, 1)',
                                      width: 1.5
                                            }
                                            }
                                        };

                            var data = [Forecast];

                            var layout = {
                                title: 'Sales Forecast - Leads and Deals',
                                barmode: 'stack'
                                         };

                            var config = {responsive: true}
                            Plotly.newPlot('DivBarChart', data, layout, config);

                     });

               </script>

Я хочу раскрасить график в зависимости от этапа: Год Месяц Стадия Доход Дата Кумулятивная 0 2022 Февраль Лид 750.0 Февраль-2022 NaN 1 2022 Mar Lead 16172.5 Mar-2022 NaN 2 2022 Apr Lead 43617.0 Apr-2022 NaN 3 2022 Oct Deal 120000.0 Oct-2022 120000.0

Отзывы, ССК

Пожалуйста, посмотрите мой вопрос, очевидно, что очень легко сделать цикл с помощью javascript, однако, было бы здорово узнать, есть ли более прямой путь, не нужно говорить, что это решение заняло 3 минуты:

 $(document).ready(function(){
                            var xValue = {{ date|safe }};
                            var yValue = {{ revenue|safe }};
                            var stage = {{ stage|safe }};
                            let array_color = []

                            for(var i=0;i<stage.length;i++){
                                if (stage[i] === "Lead"){
                                    array_color.push('rgba(255, 99, 132, 0.5)')
                                }else{
                                    array_color.push('rgba(0, 131, 117, 0.5)')

                                }
                            }
                            console.log(array_color)


                                var Forecast = {
                                  x: xValue,
                                  y: yValue,
                                  type: 'bar',
                                  text: yValue.map(String),
                                  textposition: 'auto',
                                  hoverinfo: 'none',
                                  name:'Leads',
                                  marker: {
                                    color: array_color,
                                    opacity: 1.0,
                                    }
                                        };

                            var data = [Forecast];

                            var layout = {
                                title: 'Sales Forecast - Leads and Deals',
                                barmode: 'stack'
                                         };

                            var config = {responsive: true}
                            Plotly.newPlot('DivBarChart', data, layout, config);

                     });

enter image description here

Вернуться на верх