Cuidado com as curvas!
Olá, pessoal!
Nesse segundo arquivo da série vou abordar um problema de percepção visual comum em muitos gráficos que estão por aí, desde jornais até revistas especializadas. Por diversas vezes esse fenômeno é utilizado de forma maliciosa para induzir o leitor a acreditar em algo que não é verdadeiro. E em épocas de fake news esse é um prato cheio! Aproveitarei para plotar mais um gráfico básico no ggplot2 e brincar um pouco com seus recursos.
Se você ainda tem dificuldades para trabalhar com o R recomendo o curso da Financial Risk Academy, Construindo um Banco de Dados Econômico-Financeiros, onde meu colega Lucas Processi, profissional com extensa experiência na área de finanças e programação, ensina a montar um banco de dados de econômico-financeiros do início ao fim. Mesmo que você não seja da área financeira, vale a pena conferir. Pois ele ensina a acessar webservices, bancos de dados e muitos outros recursos valiosos a qualquer área.
Mas vamos tratar de curvas... O ponto principal é: A proporção utilizada em um gráfico afeta diretamente nossa capacidade de perceber as taxas de mudança no mesmo. Some-se a isso o fato de que nós humanos temos relativa dificuldade em calcular distâncias verticais. Por exemplo, nos dois gráficos plotados abaixo, qual parece ter uma taxa de mudança maior?
No primeiro gráfico temos a percepção de que se trata de um crescimento rápido e que até mesmo tem um ritmo mais acelerado no final da curva. No segundo gráfico as curvas parecem representar um crescimento mais suave e constante. Porém, os dados plotados são exatamente os mesmos como pode ser visto abaixo.
É realmente incrível que não exista diferença entre os dados plotados. A única coisa que mudou foi mesmo a proporção que utilizei na hora de plota-los. Ao comprimir excessivamente a área onde o gráfico vai ser plotado eu criei uma distorção, essa espécie de ilusão de ótica, que dá ao leitor a sensação de que a primeira curva é muito mais acentuada, tendo uma taxa de mudança muito maior que a primeira. Quando sabemos que não é verdade. Os mesmos dados plotados podem ter resultados visuais totalmente diferentes. É aí que pessoas mal intencionadas se aproveitam da forma como o cérebro funciona.
No pequeno vídeo abaixo você pode ver que as curvas plotadas são as mesmas mas estou alterando continuamente a proporção onde o gráfico está sendo plotado. Veja como o gráfico é percebido de formas diferentes.
Agora vamos trabalhar com o R e ver como essas curvas foram plotadas. A primeira coisa é carregar o ggplot2:
#carrega o pacote ggplot2
library(ggplot2)
Precisamos importar os dados que serão plotados. O .csv que você pode baixar aqui e o nome dele é plot2linhas_percepcao_visual.csv. Vamos usar a função read.csv() para ler esses dados.
#carrega o pacote ggplot2 library(ggplot2) #lê os dados usando a função read.csv e salva em percepcao_visual percepcao_visual <- read.csv("plot2linhas_percepcao_visual.csv")
E vamos transformar percepcao_visual em um data frame usando a função data.frame() e carrega-lo em df_percepcao_visual:
#transforma em data frame usando a função data.frame() df_percepcao_visual <- data.frame(percepcao_visual)
É uma boa prática visualizar os dados com a função View():
Perfeito! Os dados estão prontos para serem plotados. Uma curva vai usar as coordenadas x1 e y1 e a outra as coordenadas fornecidas pelas colunas x2 e y2. Repare mais uma vez como os valores são próximos uns dos outros.
Vamos destrinchar um pouco o comando que vai gerar o gráfico. Primeiro precisamos chamar o ggplot e dizer para ele quais dados serão plotados, no caso o nosso data frame df_percepcao_visual. Depois vou usar a função aes() para mapear os dados nos eixos corretos, o eixo X vai receber os dados da coluna x1 e o eixo Y os dados da coluna y1. Falta agora eu adicionar a camada que vai desenhar os dados, no caso vamos usar uma linha e a função que faz isso é a geom_line().
#carrega o pacote ggplot2
library(ggplot2)
#lê os dados usando a função read.csv e salva em percepcao_visual
percepcao_visual <- read.csv("plot2linhas_percepcao_visual.csv")
#transforma percepcao_visual em um data frame usando a função data.frame()
df_percepcao_visual <- data.frame(percepcao_visual)
#plotando uma curva
ggplot (df_percepcao_visual, aes(x = x1, y = y1)) +
geom_line()
E o resultado é esse aqui:
Apesar de termos carregado os dados corretamente para o ggplot ele desenhou apenas uma das curvas. Isso está correto, pois nós só mapeamos os dados das colunas x1 e y1. O que nós vamos fazer agora é adicionar mais uma camada, sempre usando o símbolo de +, e usar novamente a função geom_line() para desenhar a outra curva.
#carrega o pacote ggplot2
library(ggplot2)
#lê os dados usando a função read.csv e salva em percepcao_visual
percepcao_visual <- read.csv("plot2linhas_percepcao_visual.csv")
#transforma percepcao_visual em um data frame usando a função data.frame()
df_percepcao_visual <- data.frame(percepcao_visual)
#plotando uma curva
ggplot (df_percepcao_visual, aes(x = x1, y = y1)) +
geom_line() +
#plotando a segunda curva
geom_line(data=df_percepcao_visual, aes(x = x2, y = y2))
Agora vamos destrinchar o comando que vai gerar essa segunda curva, pois ele é um pouco diferente do primeiro. No primeiro comando eu não precisei indicar os dados plotados com o parâmetro "data=" mas na segunda curva é necessário. O resto do comando é exatamente igual, só trocando as colunas que serão plotadas.
Então vamos rodar o script e ver como fica o gráfico:
Pronto! Temos agora nosso gráfico e podemos brincar com as proporções, faça esse exercício e veja como realmente sua percepção vai ser afetada.
Espero que esse pequeno artigo tenha sido útil. No próximo artigo da série vamos replicar um dos primeiros gráficos já produzidos. Obrigado e não deixe de conhecer mais sobre nossa startup e nossos cursos em financialriskacademy.com
Até logo!
CTIO | Diretor Executivo de Tecnologia | ViV Saúde Mental e Emocional
4 aExcelente trabalho Fred, obrigado por compartilhar!