Histogramas são usados para mostrar a frequência com que uma variável ocorre. Isto é muito interessante para mostrar qual a distribuição dos seus dados e podemos apresentar em forma de frequência absoluta, relativa, percentual e acumulada. Para exemplificar este tipo gráfico, vamos utilizar os dados de inventário de uma propriedade fictícia na Amazônia. Estes dados são meramente ilustrativos e não tem valor real. O objetivo aqui é apresentar algumas particularidades da construção de gráficos de barras no R e facilitar a vida de quem quer abandonar os gráficos do Excel.

if (!require("pacman")) install.packages("pacman")
pacman::p_load(readr, dplyr, ggplot2)
dados <- read_csv2(
  "https://raw.githubusercontent.com/italocegatta/italocegatta.github.io_source/master/content/dados/base_amazonia.csv"
)

dados
## # A tibble: 276 x 7
##    Especie       Nome_cientifico         Comercial   DAP  HCom Volume    QF
##    <chr>         <chr>                   <chr>     <dbl> <dbl>  <dbl> <dbl>
##  1 NAO IDENTIFI~ Nao Identificada        Nao          20    10   0.23     2
##  2 EMBIRA        Lecythidaceae           Nao          34    13   0.83     1
##  3 NAO IDENTIFI~ Nao Identificada        Nao          18     6   0.11     1
##  4 SUCUPIRA      Leguminosae-Papilionoi~ Nao          18     7   0.13     1
##  5 CANELA        Lauraceae               Nao          24    10   0.32     1
##  6 TACHI         Lecythidaceae           Sim          21    10   0.25     1
##  7 ENVIRA CAJU   Annonaceae              Nao          20    11   0.25     2
##  8 JUTAI         Leguminosae-Caesalpini~ Nao          38    13   1.04     2
##  9 CATUABA       Vochysiaceae            Sim          57    13   2.32     1
## 10 NAO IDENTIFI~ Nao Identificada        Nao          22     7   0.19     2
## # ... with 266 more rows

Primeiro vamos ver qual a distribuição dos indivíduos em classes de diâmetro. A Figura 1 mostra a frequência de indivíduos em classes de diâmetro de 10 cm. Visivelmente, podemos ver que a faixa de diâmetro mais frequente está entre 15 e 35 cm (centro de classe 20 e 30 cm, respectivamente).

ggplot(dados, aes(DAP)) +
  geom_histogram(binwidth = 10, color =" black", alpha = 0.8) +
  labs(x = "Diâmetro (cm)", y = "Frequência (arv/ha)") +
  scale_x_continuous(breaks = seq(0, 100, 10)) +
  theme_bw(16)
Histograma com a frequência absoluta por classes de diâmetro.

Figura 1: Histograma com a frequência absoluta por classes de diâmetro.

Mas, e quanto às espécies comerciais? Como elas estão distribuídas? A Figura 2 faz esta diferenciação. E lembre-se, no manejo florestal da Amazônia só é permitido a exploração de árvores com diâmetro maior que 50 cm.

ggplot(dados, aes(DAP, fill = Comercial)) +
  geom_histogram(binwidth = 10, color =" black", alpha = 0.8) +
  labs(
    x = "Diâmetro (cm)", y = "Frequência (arv/ha)",
    fill = "Comercial?"
  ) +
  scale_x_continuous(breaks = seq(0, 100,10)) +
  scale_fill_hue(labels = c("Não", "Sim")) +
  theme_bw(16)
Histograma com a frequência absoluta por classes de diâmetro e separação pelo fator de árvores de interesse comercial.

Figura 2: Histograma com a frequência absoluta por classes de diâmetro e separação pelo fator de árvores de interesse comercial.

Vamos melhorar um pouco mais a informação sob o ponto de vista da exploração: qual a frequência de indivíduos que são de interesse comercial e tem diâmetro mais que 50 cm? (Figura 3).

ggplot(dados, aes(Volume, fill = DAP > 50 & Comercial == "Sim")) +
  geom_histogram(binwidth = 0.5, color =" black", alpha = 0.8) +
  labs(
    x = Volume~individual~(m^3~arv^-1), y = "Frequência (arv/ha)",
    fill = "Pode explorar?"
  ) +
  scale_y_continuous(breaks = seq(0, 150, 20)) +
  scale_x_continuous(breaks = seq(0, 10, 0.5)) +
  scale_fill_hue(labels = c("Não", "Sim")) +
  theme_bw(16)
Histograma com a frequência absoluta por classes de volume individual e separação pelo fator de árvores de interesse comercial e diâmetro maior que 50 cm.

Figura 3: Histograma com a frequência absoluta por classes de volume individual e separação pelo fator de árvores de interesse comercial e diâmetro maior que 50 cm.

Se quisermos ainda apresentar o gráfico em termos das frequências relativas, podemos fazer a seguinte modificação, conforme a Figura 4.

ggplot(dados, aes(Volume, fill = DAP > 50 & Comercial == "Sim")) +
  geom_histogram(
    aes(y = ..count../sum(..count..)),
    binwidth = 0.5, color =" black", alpha = 0.8
  ) +
  labs(
    x = Volume~individual~(m^3~arv^-1), y = "Frequência (arv/ha)",
    fill = "Pode explorar?"
  ) +
  scale_y_continuous(breaks = seq(0, .5, 0.05), labels = scales::percent) +
  scale_x_continuous(breaks = seq(0, 10, 0.5)) +
  scale_fill_hue(labels = c("Não", "Sim")) +
  theme_bw(16)
Histograma com a frequência relativa por classes de volume individual e separação pelo fator de árvores de interesse comercial e diâmetro maior que 50 cm.

Figura 4: Histograma com a frequência relativa por classes de volume individual e separação pelo fator de árvores de interesse comercial e diâmetro maior que 50 cm.

Caso tenha alguma dúvida ou sugestão sobre o post, fique à vontade para fazer um comentário ou me contatar por E-mail.

sessioninfo::session_info(c("readr", "dplyr", "ggplot2"))
## - Session info ----------------------------------------------------------
##  setting  value                       
##  version  R version 3.5.3 (2019-03-11)
##  os       Windows 10 x64              
##  system   x86_64, mingw32             
##  ui       RTerm                       
##  language (EN)                        
##  collate  Portuguese_Brazil.1252      
##  ctype    Portuguese_Brazil.1252      
##  tz       America/Sao_Paulo           
##  date     2019-08-25                  
## 
## - Packages --------------------------------------------------------------
##  package      * version  date       lib source        
##  assertthat     0.2.1    2019-03-21 [1] CRAN (R 3.5.3)
##  backports      1.1.4    2019-04-10 [1] CRAN (R 3.5.3)
##  BH             1.69.0-1 2019-01-07 [1] CRAN (R 3.5.2)
##  cli            1.1.0    2019-03-19 [1] CRAN (R 3.5.3)
##  clipr          0.7.0    2019-07-23 [1] CRAN (R 3.5.3)
##  colorspace     1.4-1    2019-03-18 [1] CRAN (R 3.5.3)
##  crayon         1.3.4    2017-09-16 [1] CRAN (R 3.5.1)
##  digest         0.6.20   2019-07-04 [1] CRAN (R 3.5.3)
##  dplyr        * 0.8.3    2019-07-04 [1] CRAN (R 3.5.3)
##  ellipsis       0.2.0.1  2019-07-02 [1] CRAN (R 3.5.3)
##  fansi          0.4.0    2018-10-05 [1] CRAN (R 3.5.1)
##  ggplot2      * 3.2.1    2019-08-10 [1] CRAN (R 3.5.3)
##  glue           1.3.1    2019-03-12 [1] CRAN (R 3.5.3)
##  gtable         0.3.0    2019-03-25 [1] CRAN (R 3.5.3)
##  hms            0.5.0    2019-07-09 [1] CRAN (R 3.5.3)
##  labeling       0.3      2014-08-23 [1] CRAN (R 3.5.0)
##  lattice        0.20-38  2018-11-04 [2] CRAN (R 3.5.3)
##  lazyeval       0.2.2    2019-03-15 [1] CRAN (R 3.5.3)
##  magrittr       1.5      2014-11-22 [1] CRAN (R 3.5.1)
##  MASS           7.3-51.1 2018-11-01 [2] CRAN (R 3.5.3)
##  Matrix         1.2-17   2019-03-22 [1] CRAN (R 3.5.3)
##  mgcv           1.8-28   2019-03-21 [1] CRAN (R 3.5.3)
##  munsell        0.5.0    2018-06-12 [1] CRAN (R 3.5.1)
##  nlme           3.1-137  2018-04-07 [2] CRAN (R 3.5.3)
##  pillar         1.4.2    2019-06-29 [1] CRAN (R 3.5.3)
##  pkgconfig      2.0.2    2018-08-16 [1] CRAN (R 3.5.1)
##  plogr          0.2.0    2018-03-25 [1] CRAN (R 3.5.1)
##  plyr           1.8.4    2016-06-08 [1] CRAN (R 3.5.1)
##  purrr          0.3.2    2019-03-15 [1] CRAN (R 3.5.3)
##  R6             2.4.0    2019-02-14 [1] CRAN (R 3.5.2)
##  RColorBrewer   1.1-2    2014-12-07 [1] CRAN (R 3.5.0)
##  Rcpp           1.0.2    2019-07-25 [1] CRAN (R 3.5.3)
##  readr        * 1.3.1    2018-12-21 [1] CRAN (R 3.5.2)
##  reshape2       1.4.3    2017-12-11 [1] CRAN (R 3.5.1)
##  rlang          0.4.0    2019-06-25 [1] CRAN (R 3.5.3)
##  scales         1.0.0    2018-08-09 [1] CRAN (R 3.5.1)
##  stringi        1.4.3    2019-03-12 [1] CRAN (R 3.5.3)
##  stringr        1.4.0    2019-02-10 [1] CRAN (R 3.5.2)
##  tibble         2.1.3    2019-06-06 [1] CRAN (R 3.5.3)
##  tidyselect     0.2.5    2018-10-11 [1] CRAN (R 3.5.1)
##  utf8           1.1.4    2018-05-24 [1] CRAN (R 3.5.1)
##  vctrs          0.2.0    2019-07-05 [1] CRAN (R 3.5.3)
##  viridisLite    0.3.0    2018-02-01 [1] CRAN (R 3.5.1)
##  withr          2.1.2    2018-03-15 [1] CRAN (R 3.5.1)
##  zeallot        0.1.0    2018-01-28 [1] CRAN (R 3.5.2)
## 
## [1] C:/Users/Italo/Documents/R/win-library/3.5
## [2] C:/Program Files/R/R-3.5.3/library