Постройте линии с использованием дат начала и окончания - PullRequest
0 голосов
/ 29 мая 2020

У меня есть DataFrame со столбцами: дата начала , дата окончания и значение . Как я могу построить одну строку для каждой даты начала и окончания в Plotly?

Пример:

import pandas as pd
import plotly.express as px
df = pd.DataFrame({"start date": [1,2,3,4], "end date":[8,7,4,9], "value":[11,3,11,4]})
fig = px.line(df, x=["start date","end date"], y="value")
fig.show()

В этом случае есть только две строки для столбцов дата начала и дата окончания . Однако я ищу по 1 строке для каждой даты начала и окончания . Я пробовал с параметром color = "value" , но при значении 11 он отображает только 1 строку. Я мог бы распечатать его простым графиком plt как:

import matplotlib.pyplot as plt
x = [df["start date"], df["end date"]]
y = [df["value"], df["value"]]
plt.plot(x, y)
plt.show()

Ответы [ 2 ]

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

Чтобы создать несколько «независимых» строк, вам нужно будет создать несколько трассировок, как в примере ниже:

import pandas as pd
import plotly.graph_objs as go

df = pd.DataFrame({"start date": [1,2,3,4], "end date":[8,7,4,9], "value":[11,3,11,4]})

fig = go.Figure()
for (start, end, value) in zip(df["start date"], df["end date"], df["value"]):
    name = f"{start} to {end}"
    fig.add_trace(go.Scatter(x=[start, end], y=[value, value],
                    mode='lines', name = name))    


fig.show()

Результат:

enter image description here

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

На самом деле ваш график содержит обе линии с y=11, но они синие и зеленые, и поэтому их трудно различить guish. Но вы можете использовать собственные цвета, например:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

colors = ['blue', 'red', 'yellow', 'green']
for x1, x2, y, c in zip(df["start date"], df["end date"], df["value"], colors):
    plt.plot([x1, x2], [y, y], color=c)

enter image description here

...