2
respostas

[Dúvida] Código não está funcionando

# 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
import matplotlib.ticker as mticker
import seaborn as sns

# Configurações iniciais de fonte
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams["font.sans-serif"] = 'Verdana'

def candlestick(date, open, high, low, close):
    fig, ax = plt.subplots(figsize=(30,11), dpi=72, facecolor='#edf3ee')
    ax.set_facecolor("#edf3ee")

    # Definindo as cores de cada candle
    cores = ["green" if close > open else "red" for close, open in zip(close, open)]

    # Candlestick corpo + pavio
    sns.barplot(x=date, y=np.abs(open-close), bottom=np.min((open,close), axis=0), width=0.8, palette=cores, ax = ax)
    sns.barplot(x=date, y=high-low, bottom=low, width=0.1, palette=cores, ax = ax)

    # Ajustando os ticks dos eixos x ey
    plt.setp(ax, xticks = ax.get_xticks(), yticks = ax.get_yticks(),
              xticklabels = [date[i].strftime('%b %Y') for i in ax.get_xticks()],
              yticklabels= [f'R$ {valor:.2f}' for valor in ax.get_yticks()])

    # Ajustando tamanhos dos labels, retirando títulos e bordas
    ax.set_xlabel('')
    ax.set_ylabel('')
    ax.tick_params(axis='both', labelsize=32)
    ax.xaxis.set_major_locator(mticker.MaxLocator(4))
    sns.despine()
    plt.grid(alpha=0.2)

    #Ajustando o limite de y para um respiro 
    plt.ylim(ax.get_ylim()[0]-0.5, ax.get_ylim()[1] +0.5)


dataset["Date"] = pd.to_datetime(dataset["Date"], format="%Y-%m-%dT%H:%M:%S")

candlestick(dataset["Date"], dataset["Open"], dataset["High"], dataset["Low"], dataset["Close"])

plt.subplots_adjust(left=0.07, bottom=0.05, right=0.95, top=0.95)
plt.show()

Meu código aparentemente está igual ao desenvolvido em aula, porém quando executo ele me retorna erro.

2 respostas

Localizei o erro, no script da aula que vem nessa box:

// trecho de código omitido

# Ajustando tamanhos dos labels, retirando títulos e bordas
ax.set_xlabel('')
ax.set_ylabel('')
ax.tick_params(axis='both', labelsize=32)
ax.xaxis.set_major_locator(mticker.MaxLocator(4))
sns.despine()
plt.grid(alpha=0.2)

// trecho de código omitido

Está escrito na linha: ax.xaxis.set_major_locator(mticker.MaxLocator(4))

Porém o correto e que é mostrado no vídeo é ax.xaxis.set_major_locator(mticker.MaxNLocator(4))

Tratando-se então do erro na falta da letra N em Locator.

Oii, Tulio! Tudo bem?

Muito bem, fico feliz que tenha encontrado uma solução para o problema que estava tendo! E agradeço por compartilhar no fórum onde estava o problema e como resolveu. Encaminharei o seu feedback para equipe responsável analisar, certamente sua sugestão contribuirá nas melhorias do conteúdo.

Continue se dedicando aos estudos e qualquer dúvida, conte conosco.

Bons estudos!