Я хочу сравнить данные внутри фрейма данных, отображая некоторые данные в виде строк, а другие столбцы в виде разброса. Мои фактические данные представляют собой комбинацию выходных данных модели и наблюдений, я хочу, чтобы наблюдения были разбросаны, а модель была линиями.
Наблюдения имеют МНОГО значений Nan (большинство временных шагов не имеют наблюдения ).
Этот MWE дублирует проблему, с которой я столкнулся
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
base = datetime.datetime.today()
date_list = [base - datetime.timedelta(days=x) for x in range(40)]
df = pd.DataFrame(data = {
"Time": date_list,
"Chocolate": np.random.rand(40),
"Strawberry": np.random.rand(40),
"Fake Chocolate": np.random.rand(40),
"Fake Strawberry": np.random.rand(40),
})
df.iloc[3,3] = np.nan
ax1 = df.plot(x = 'Time', y = ["Chocolate","Strawberry"])
ax1 = df.plot(x = 'Time', y = ["Chocolate","Strawberry"])
ax2 = df.plot.scatter(x = 'Time', y = ['Fake Chocolate'], marker = '^', ax = ax1)
ax3 = df.plot.scatter(x = 'Time', y = ['Fake Strawberry'], marker = '*', ax = ax1, color = '#ff7f0e')
пример вывода
Я хочу, чтобы ось x была такой же, как на первом графике, поэтому возьму стиль линейного графика, где у вас нет КАЖДОЙ даты, пытающейся напечатать в крошечном пространстве. Как мне это сделать?
Я использую ax1.set
для установки меток осей x и y.
и если я могу украдкой ответить на второй вопрос, почему это возможно несколько строк с использованием y = []
, но невозможно для диаграмм рассеяния?