Определить цвет для конкретных данных в сюжетном питоне

Я реализовал временную шкалу для отображения своих данных. Для создания временной шкалы я использовал:

fig = px.timeline(df
                  , x_start = "Start"
                  , x_end = "End"
                  , y = "Name"
                  , hover_name = "Task"
                  , opacity=0.8
                  , template='plotly_white'
                  , height=len(df)*35
                  , width=1150
                  , color = "Type"
                  , category_orders=dict(
                    Name=df["Name"].drop_duplicates().tolist()
                    )
                  )

Вы можете видеть, что цвета основаны на «Типе». В моем кадре данных у меня есть два типа данных: релизы и эпики. Цвета выглядят следующим образом:

Определить цвет для конкретных данных в сюжетном питоне

Проблема здесь в том, что цвета генерируются случайным образом. Однако я хотел бы определить цвета следующим образом:

colors = {'Release':'rgb(255,239,0)', 'Epic':'rgb(148, 76, 228)'}
fig.update(color=colors)

Есть ли способ сделать это?

Вы пробовали использовать один из color_* параметров timeline, например color_discrete_sequence или color_discrete_map? plotly.com/python-api-reference/generated/…

Scriptim 17.03.2022 17:49
Почему в 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
1
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • смоделировали некоторые данные, чтобы соответствовать вашему коду
  • прокомментировал высоту и ширину, чтобы он соответствовал моему экрану
  • это простой случай использования color_discrete_map
import pandas as pd
import numpy as np
import plotly.express as px

n = 8
df = pd.DataFrame(
    {
        "Start": pd.date_range("1-jan-2021", freq = "1M", periods=n),
        "End": pd.date_range("1-mar-2021", freq = "1M", periods=n),
        "Name": [str(i) for i in range(n)],
        "Task": np.random.choice(list("ABCDE"), n),
        "Type": np.random.choice(["Epic", "Release"], n),
    }
)

fig = px.timeline(
    df,
    x_start = "Start",
    x_end = "End",
    y = "Name",
    hover_name = "Task",
    opacity=0.8,
    template = "plotly_white",
    # height=len(df) * 35,
    # width=1150,
    color = "Type",
    category_orders=dict(Name=df["Name"].drop_duplicates().tolist()),
    color_discrete_map = {"Release": "rgb(255,239,0)", "Epic": "rgb(148, 76, 228)"},
)

fig

Это отлично сработало для меня! Однако мне нужно было определить color_discrete_map category_orders. В противном случае он просто снова назначит цвета случайным образом. Благодарю вас!

Oweys 17.03.2022 19:32

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