Nas postagens anteriores já apresentei seaborn e matplotlib .pyplot para visualização em Python. Neste post quero apresentar o módulo altair. Este é um módulo alternativo que suporta visualização em Python.
O módulo altair pode ser instalado com pip install por meio do prompt de comando.
Abaixo eu importo o módulo altair junto com pandas e pandas_datareader . Usarei o pandas_datareader para ler os dados de preço das ações da Tesla. Vou visualizar a evolução do preço das ações com um gráfico criado no altair. Mas primeiro eu consulto os dados do Yahoo Finance e mostro o cabeçalho do dataframe recuperado:
# importa módulos relevantes import pandas as pd import altair as alt import pandas_datareader .data as web import datetime # lê dados de preços de ações para tesla nos últimos 5 anos start = datetime.datetime(2015,10,11) end = datetime.datetime (2020,10,11) df = web.DataReader("TSLA","yahoo",start,end) # exibe o cabeçalho do quadro de dados de preços de ações df.head()
Alto | Baixo | Abrir | Perto | Volume | Ajuste Fechar | |
---|---|---|---|---|---|---|
Encontro | ||||||
2015-10-12 | 44.599998 | 43.054001 | 44,598000 | 43.116001 | 19181500.0 | 43.116001 |
13/10/2015 | 44.504002 | 42.226002 | 42.655998 | 43.849998 | 25857500.0 | 43.849998 |
2015-10-14 | 44.189999 | 43.085999 | 44.133999 | 43.375999 | 15522000.0 | 43.375999 |
15/10/2015 | 44.346001 | 42.740002 | 43.285999 | 44.262001 | 14221000.0 | 44.262001 |
16/10/2015 | 46.096001 | 44.574001 | 44.608002 | 45.402000 | 21672500.0 | 45.402000 |
Atualmente, as datas são índices de linha do quadro de dados. Para trabalhar com altair, é melhor adicioná-los como uma coluna separada com um cabeçalho de coluna especificado:
df["Datas"] = df.index
Agora que tenho meus dados, posso criar um gráfico de preços de ações com o módulo altair em Python:
# cria gráfico com gráfico altair = alt.Chart(df).mark_area().encode( x="Datas", y="Fechar" ) # exibe gráfico gráfico altair

Esse foi um gráfico muito básico. Abaixo crio outro gráfico de área, com um gradiente de cores:
# criar gráfico de altair chart = alt.Chart(df).mark_area(line={'color':'darkgreen'},color=alt.Gradient( gradient='linear', stops=[alt.GradientStop(color='white ', offset=0), alt.GradientStop(color='darkgreen', offset=1)])).encode(x="Datas",y="Fechar") # exibe gráfico gráfico de altair

Quero adicionar um título ao gráfico. Também quero alterar os títulos dos eixos x e y. Eu faço isso no código abaixo:
# adicione o título do gráfico chart.title = "Preços de fechamento diários da TSLA [USD]" # ajuste os rótulos dos eixos x e y chart.encoding.x.title = "Hora" chart.encoding.y.title = "Preço de fechamento diário [USD ]" # exibir gráfico gráfico modificado

Agora vamos tentar fazer um diagrama de velas. Uma explicação da análise de ações com diagramas de velas pode ser encontrada, por exemplo, aqui: https://diagrammm.com/candlestick_chart
# cria condições de cores color_conditions = alt.condition("datum.Open <= datum.Close", alt.value("green"), alt.value("red"))# build chart chart = alt.Chart(df) .encode(x = "Datas") # define o título do gráfico chart.title = "Diagrama de velas dos preços das ações da TSLA" # define o rótulo do eixo x para o gráfico chart.encoding.x.title = "Tempo" # constrói uma regra marque usando o método mark_rule() rules = chart.mark_rule().encode( y = "Low", y2 = "High") # ajuste o rótulo do eixo y para regras rules.encoding.y.title = "Preço" # construir barras bars = chart.mark_bar().encode( y="Open", color = color_conditions) # exibe regras e barras (ambas baseadas nas mesmas regras básicas do gráfico + barras

No diagrama do castiçal acima, as barras do altar foram colocadas como uma segunda camada sobre as réguas do altar.
Vamos criar mais alguns exemplos de plotagem, usando os dados de preços de ações da Tesla. No código abaixo, crio um gráfico de linhas de preços de ações para os preços de fechamento diário das ações da Tesla:
# cria plotagem de linhas chart = alt.Chart(df).mark_line().encode(x="Datas",y="Fechar") # define o título e os rótulos dos eixos chart.title = Gráfico "Preços diários de fechamento das ações TSLA" . encoding.x.title = "Tempo" chart.encoding.y.title = "Preço [USD]" # exibir gráfico de plotagem de linhas

Ao criar um gráfico, também posso especificar algumas propriedades adicionais, como por exemplo, a largura do gráfico:
# cria condições de cores color_conditions = alt.condition("datum.Open <= datum.Close", alt.value("green"), alt.value("red"))# build chart chart = alt.Chart(df) .encode(x = "Datas").properties(width=800) # define o título do gráfico chart.title = "Diagrama de velas dos preços das ações da TSLA" # define o rótulo do eixo x para o gráfico chart.encoding.x.title = "Time" # constrói uma marca de regra usando o método mark_rule() rules = chart.mark_rule().encode( y = "Low", y2 = "High") # ajusta o rótulo do eixo y para regras rules.encoding.y.title = "Preço" # construir barras y="Abrir", y2="Close", color = color_conditions) # exibe regras e barras (ambas baseadas nas mesmas regras básicas do gráfico + barras

Isso conclui minha introdução básica ao módulo altair em Python. Para mais informações, por exemplo, recomendo verificar a documentação: https://altair-viz.github.io/
Você também pode conferir meus outros posts sobre visualização em Python e R, cobrindo, por exemplo, visualização de dados espaciais com Leaflet em R, geocodificação e mapeamento de calor com Folium e Leaflet em Python e mapeamento de calor 3D com deckgl em R. Também escrevi vários tutoriais sobre visualização de dados com Seaborn e Matplotlib .pyplot em Python. Por exemplo, usei Matplotlib para visualizar a fronteira eficiente de estoques de caminhões aplicando a teoria de portfólio de Markowitz em combinação com simulações de monte-carlo.

Cientista de dados com foco em simulação, otimização e modelagem em R, SQL, VBA e Python
Leave a Reply