Как показать несколько строк вместо одной? - PullRequest
4 голосов
/ 05 марта 2020

Для школы я должен выполнить задание, в котором я показываю длину трафика c для измеренных времен для каждого города. Когда я пытаюсь это сделать, я получаю такой результат:

Result

Вот фотография моего фрейма данных:

Dataframe

Вот мой код:

import plotly.express as px

datum = data.loc[data['Date'] == '2020-03-03']
datum = datum.sort_values(by='Time')
dataframe = pd.DataFrame(datum, columns = ['City','Time', 'Date','Traffic_length', 'Traffic_jams'])

dataframe = dataframe.reset_index()

fig = px.line(dataframe, x="Time", y="Traffic_length", color='City')
fig.show()

Я хочу, чтобы каждый город показывался по-разному, например:

Example

Я пробовал несколько вещей, но ничего не помогло. Кто-нибудь знает, как это сделать с помощью plotly. express?

Ответы [ 3 ]

2 голосов
/ 05 марта 2020

Проблема в том, что ось x является категориальной. Вы можете исправить это, преобразовав его в datetime. Полный код будет выглядеть так:

import plotly.express as px

datum = data.loc[data['Date'] == '2020-03-03']
datum = datum.sort_values(by='Time')
dataframe = pd.DataFrame(datum, columns = ['City','Time', 'Date','Traffic_length', 'Traffic_jams'])

df = dataframe.reset_index()
df["Time"] = pd.to_datetime(df["Time"]) # <-- This is what you missed

fig = px.line(df, x="Time", y="Traffic_length", color='City')
fig.show()
0 голосов
/ 05 марта 2020

Вы можете использовать функцию pandas ', например:

import matplotlib.pyplot as plt
import pandas as pd
df = dataframe
fig, ax = plt.subplots()
df.groupby('City').plot(x='Time', y='Traffic_length', ax=ax, legend=True)
0 голосов
/ 05 марта 2020

Преобразование данных с использованием разворота, а затем построение графика

import matplotlib.pyplot as plt
df = df.pivot(index='Time', columns='City', values='Traffic_length')
df.plot()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...