Ось X (время) ось) имеет пробелы из-за праздников, а также есть пробелы в текущих рыночных данных, потому что это 1-минутный таймфрейм, и в определенные интервалы времени могли не быть сделок, особенно в 00:00, но также возможно в другое время.
Я хочу убрать эти пробелы из сюжета. Как мне это сделать, если мне нужно использовать matplotlib.pyplot?
Это мой код:
Код: Выделить всё
def plot_data(df, candle_length):
green_df = df[df.Close > df.Open].copy()
green_df["Height"] = green_df["Close"] - green_df["Open"]
red_df = df[df.Close < df.Open].copy()
red_df["Height"] = red_df["Open"] - red_df["Close"]
doji_df = df[df.Close == df.Open].copy()
fig = plt.figure(figsize=(16,8))
ax = fig.add_subplot()
ax.grid(linestyle='--')
if len(green_df) > 0:
ax.vlines(x=green_df.index, ymin=green_df["Low"], ymax=green_df["High"], color="#00CC00")
ax.bar(x=green_df.index, height=green_df["Height"], width=candle_length/1440, bottom=green_df["Open"], color="#00CC00")
if len(red_df) > 0:
ax.vlines(x=red_df.index, ymin=red_df["Low"], ymax=red_df["High"], color="#CC0000")
ax.bar(x=red_df.index, height=red_df["Height"], width=candle_length/1440, bottom=red_df["Close"], color="#CC0000")
if len(doji_df) > 0:
ax.vlines(x=doji_df.index, ymin=doji_df["Low"], ymax=doji_df["High"], color="#888888")
ax.hlines(xmin=pd.to_datetime(doji_df.Timestamp - candle_length*30, unit="s"), xmax=pd.to_datetime(doji_df.Timestamp + candle_length*30, unit="s"), y=doji_df["Open"], colors="#888888")
fig.tight_layout()
plot_data(get_candles(symbol, timeframe, candle_count, candle_length, max_time_period), candle_length)
изображение
Я нашел следующее:
Код: Выделить всё
dt_all = pd.date_range(start=df['Date'].iloc[0],end=df['Date'].iloc[-1], freq = '5min')
dt_obs = [d.strftime("%Y-%m-%d %H:%M:%S") for d in df['Date']]
dt_breaks = [d for d in dt_all.strftime("%Y-%m-%d %H:%M:%S").tolist() if not d in dt_obs]
fig.update_xaxes(rangebreaks=[dict(dvalue = 5*60*1000, values=dt_breaks)])
Существует ли в Pyplot эквивалент приведенного выше кода Plotly или какой-либо другой метод для этой цели?
Подробнее здесь: https://stackoverflow.com/questions/790 ... lib-pyplot