Я новичок в matplotlib и работаю с данными, значения которых указаны только с интервалом от 9
до 5
с понедельника по пятницу.
Когда я пытаюсь построить данные, я замечаю, что между пропущенными значениями между 17:00
и 9:00
в следующий рабочий день есть интерполяции из-за внезапного включения matplotlib пропущенного datetime.
Моя цель здесь:
1) добавить вертикальные пунктирные линии в левой части несплошностей
2) удалить интерполяции
Ниже приведен фрагмент кода, с которым я работаю. Код сгенерирует два графика.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
x_var1= pd.date_range(datetime(2014, 1, 14, 9, 0),datetime(2014, 1, 21, 17, 0),
freq="30min",
tz= 'US/Pacific',
closed= 'left'
)
x_var1 = x_var1[x_var1.dayofweek < 5]
x_var1= x_var1[x_var1.indexer_between_time('9:00','17:00', include_end= False)]
x_var1= x_var1[x_var1.hour != 12]
np.random.seed(0)
y_var2= np.random.normal(loc= 40, scale= 4.4, size= len(x_var1))
fig, ax= plt.subplots(nrows= 2, ncols= 1)
ax[0].plot(x_var1, y_var2)
ax[0].set_title("This plot has extra interpolation that needs to be removed and needs vertical dotted lines for discontinuities")
x_var2= np.arange(len(x_var1))
ax[1].plot(x_var2, y_var2)
ax[1].set_title("this plot only needs correct xaxis and added vertical dotted lines for discontinuities")
plt.show()
Моя цель - сделать верхний график похожим на нижний, за исключением того, что нижний график должен изменить свой ось на ось верхнего графика и добавить вертикальные пунктирные линиина левой стороне разрывов. Я все еще новичок в мире matplotlib, поэтому я не уверен, как сделать это эффективно и эффективно.
РЕДАКТИРОВАТЬ: изменил набор данных примера на более случайный, который лучше отражает реальную проблему. Также включен перерыв на обед, поэтому будут отсутствовать данные между 12:00
и 12:59