Personalizando seu gráfico do ggplot2 – Exports and Imports, William Playfair


O ggplot2 é muito bom para explorar visualmente, de forma dinâmica, sua base de dados.  Mas às vezes queremos editar cada detalhe do gráfico para uma publicação, é possível fazer isso?

Como, por exemplo, reproduzir o famoso gráfico de exportações e importações do William Playfair?

Playfair-bivariate-area-chart

Hoje resolvi testar o quão difícil seria gerar uma imagem parecida e, brincando um pouco com os parâmetros, cheguei na figura abaixo. É um pouco trabalhoso – pois temos que colocar cada texto separadamente – mas não é difícil, nem tão demorado assim.

playfair

Se você tiver um pouco mais de paciência para ajustar detalhes talvez consiga tornar a reprodução ainda mais fiel. E, caso o faça, favor compartilhar o código com todos por aqui!

***

Segue abaixo o código para gerar o gráfico acima. Os dados bem como o próprio código também estão no github.

 

# load packages -----------------------------------------------------------
library(reshape2)
library(ggplot2)

# prepare data for ggplot2 ------------------------------------------------
## data extracted from https://plot.ly/~MattSundquist/2404/exports-and-imports-to-and-from-denmark-norway-from-1700-to-1780/#plot
playfair <- readRDS("william_playfair.rds")

## create min for geom_ribbon
playfair$min <- with(playfair, pmin(exp, imp))
year <- playfair$year

## melt data
molten_data <- melt(playfair, id.vars = c("year", "min"))

# ggplot2 -----------------------------------------------------------------
ggplot(molten_data, aes(x = year, y = value)) +
geom_line(aes(col = variable), size = 1) +
geom_ribbon(aes(ymin = min, ymax = value, fill = variable), alpha = 0.3) +
scale_color_manual(values = c("darkred", "gold3"), guide = F) +
scale_fill_manual(values = c("#90752d", "#BB5766"), guide = F) +
theme_bw() +
annotate("text", x = year[5], y = 100000, label = "Line", angle = 25, size = 3, family = "Garamond") +
annotate("text", x = year[6] - 100, y = 104000, label = "of", angle = 0, size = 3, family = "Garamond") +
annotate("text", x = year[7], y = 101000, label = "Imports", angle = 340, size = 3, family = "Garamond") +
annotate("text", x = year[5] + 400, y = 73000, label = "Line", angle = 345, size = 3, family = "Garamond") +
annotate("text", x = year[6], y = 70000, label = "of", angle = 330, size = 3, family = "Garamond") +
annotate("text", x = year[7] - 200, y = 64000, label = "Exports", angle = 335, size = 3, family = "Garamond") +
annotate("text", x = year[8], y = 83000, label = "italic('BALANCE AGAINST')", angle = 0, family = "Garamond", parse = TRUE) +
annotate("text", x = year[16] + 400, y = 110000, label = "italic('BALANCE in\nFAVOUR of\nENGLAND')", angle = 0, family = "Garamond", parse = TRUE) +
annotate("text", x = year[16], y = 82000, label = "Imports", angle = 30, size = 3, family = "Garamond") +
annotate("text", x = year[14] + 200, y = 131000, label = "Exports", angle = 65, size = 3, family = "Garamond") +
ggtitle("Exports and Imports to and from DENMARK & NORWAY from 1700 to 1780") +
scale_x_date(breaks = seq(year[1], year[18], by = "10 years"),
labels = format(seq(year[1], year[18], by = "10 years"), "%Y")) +
scale_y_continuous(breaks = seq(0, 190e3, by = 10e3),
labels = seq(0, 190, by = 10)) +
theme(title = element_text(size = 8, face = 'bold', family = "Garamond"),
axis.title = element_blank(),
axis.text = element_text(family = "Garamond"),
panel.grid.minor = element_blank())
Anúncios

Statistics – PSDB Style


Porque pau que bate em Chico, bate em Francisco.

Em sua Fanpage do Facebook, o PSDB inovou com um gráfico de escalas, digamos, heterodoxas:

Captura de Tela 2014-09-17 às 19.47.36

Note que a distância de Marina para Aécio (11 pontos percentuais) está menor do que a distância de 15 para 19 (4 pontos percentuais) do próprio Aécio . O gráfico com escalas ortodoxas ficaria assim:

psdb

Mais similares: Emir Sader/Emir Sader de novo/Fox News/Venezuela/Globo News

PS: veja pelo lado bom, é uma lição de como ver o copo meio cheio.

Dica do Marco Antonio!

 

 

Statistics – Globo News style


Tem circulado pelo facebook (aqui e aqui) uma tela que aparentemente foi veiculada no programa Conta Corrente, da Globo News, com o seguinte gráfico:

Alguém vai ser demitido.

Com 5,91% maior do que 6,5%, acho que alguém está prestes a ser demitido!

PS: veja mais exemplos como esse aquiaqui  e aqui.

Mapas (e mais mapas) dos EUA no século XIX


Um livro e um site, com um blog, sobre os mais diversos mapas criados nos Estados Unidos no século XIX.

Abaixo, um exemplo – um mapa de onde ficavam as casas de jogos e prostituição em Chinatown, em São Francisco.

Chinatown

Conheça seus dados!


Trabalhando com dados de tempo de ligação (em segundos), o histograma estava assim:

ligacoes

Estranho, não? Parecia existir uma dependência curiosa, por que esses picos e vales?

Por um minuto, vieram hipóteses “interessantes”: como, por exemplo, a de que o ser humano tem uma tendência natural a conversar em intervalos mais ou menos discretos de tempo.

Dois minutos depois, a hipótese realista: os dados devem estar arredondados. E estavam. As ligações são contabilizadas de 6 em 6 segundos.

Statistics – Fox Style


A estatística não trata só de cálculos – saber comunicar os resultados, inclusive graficamente, é algo fundamental. Gelman, por exemplo, é um autor que gosta de discutir extensivamente a apresentação visual da informação.

Neste quesito, o canal de televisão Fox News tem “inovado” bastante, criando formas curiosas de apresentar dados.

O blog Simply Statistics trouxe vários exemplos. Vejam um deles, o gráfico de pizza abaixo.

Que “beleza”!

(Dica do Rafael Dantas)