O código de candlestick fornecido está com linhas de código "deprecated" deveriam mudá-lo.
Fiz um código que gera o gráfico parecido e rodou no meu Power BI.
# O código a seguir para criar um dataframe e remover as linhas duplicadas sempre é executado e age como um preâmbulo para o script:
# dataset = pandas.DataFrame(Ativo, Close, Ano, Trimestre, Mês, Dia, High, Low, Open)
# dataset = dataset.drop_duplicates()
# Cole ou digite aqui seu código de script:
# o código a seguir para criar um dataframe e remover as linhas duplicadas sempre é executado e age como um preâmbulo para o script:
# dataset = pandas.DataFrame(Date, Open, High, Low, Close)
# dataset = dataset.drop_duplicates()
# o código a seguir para criar um dataframe e remover as linhas duplicadas sempre é executado e age como um preâmbulo para o script:
# dataset = pandas.DataFrame(Date, Open, High, Low, Close)
# dataset = dataset.drop_duplicates()
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Ajuste de estilo e fonte
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['Verdana']
# Conversão segura da coluna Date
dataset["Date"] = pd.to_datetime(dataset["Date"], errors="coerce")
# Removendo valores nulos
dataset.dropna(subset=["Date", "Open", "High", "Low", "Close"], inplace=True)
# Gerando cores para os candles
cores = ["green" if c >= o else "red" for o, c in zip(dataset["Open"], dataset["Close"])]
# Criando o gráfico
fig, ax = plt.subplots(figsize=(14, 6), dpi=100)
ax.set_facecolor("#f0f0f0")
# Corpo do candle (diferença entre abertura e fechamento)
ax.bar(dataset["Date"], np.abs(dataset["Open"] - dataset["Close"]),
bottom=np.minimum(dataset["Open"], dataset["Close"]),
color=cores, width=0.8, edgecolor="black", linewidth=0.5)
# Pavio (máxima - mínima)
ax.vlines(dataset["Date"], dataset["Low"], dataset["High"],
color=cores, linewidth=1)
# Ajustes finais
ax.set_title("Gráfico Candlestick Ações da Bolsa de Valores", fontsize=16, weight="bold")
ax.set_xlabel("Data")
ax.set_ylabel("Preço")
plt.xticks(rotation=45)
plt.tight_layout()
plt.grid(True, linestyle="--", linewidth=0.5, alpha=0.7)
plt.show()