brand.yml

Author

Daniel Vartanian

Published

February 13, 2026

Project Status: Active – The project has reached a stable, usable state and is being actively developed. License: GPLv3 License: CC BY-NC-SA 4.0 Contributor Covenant 3.0 code of conduct badge

Overview

This report showcases the brand identity of the Center for Metropolitan Studies (CEM) and demonstrates the application of its brand.yml configuration.

Since the current CEM logo lacks consistency and color balance, the visual identity was designed based on CEM’s 20-Year Commemorative Logo.

The CEM brand files can be found in the brands folder in the .github repository.

brand.yml Configuration

This file may have been updated. Please check the .github repository for the latest version.

brand.yml
meta:
  name:
    short: CEM
    full: Center for Metropolitan Studies
  link:
    home: https://centrodametropole.fflch.usp.br
    github: https://github.com/cem-usp
    instagram: https://www.instagram.com/centrodametropole
    x: https://x.com/CEM_CMS
    facebook: https://www.facebook.com/CemCepid
    youtube: https://www.youtube.com/@CentrodeEstudosdaMetropole
    linkedin: https://www.linkedin.com/company/centro-de-estudos-da-metropole
  description: |
    The Center for Metropolitan Studies (CEM_ is one of the Research,
    Innovation, and Dissemination Centers (CEPIDs) of the São Paulo Research
    Foundation (FAPESP). It is based at the School of Philosophy, Letters and
    Human Sciences (FFLCH) of the University of São Paulo (USP) and at the
    Brazilian Center for Analysis and Planning (CEBRAP).
  founded: 2000

color:
  palette:
    blue: "#014691"
    gray: "#868489"
    white: "#ffffff"
    black: "#141414"
    mono-blue-1: "#14273a" # https://color.adobe.com/create/color-wheel
    mono-blue-2: "#123b64"
    mono-blue-3: "#01478f"
    mono-blue-4: "#82c1ff"
    mono-blue-5: "#add6ff"
    mono-blue-6: "#d7ebff"
    comp-blue-1: "#8f5a01" # https://color.adobe.com/create/color-wheel
    comp-blue-2: "#123b64"
    comp-blue-3: "#01488f"
    comp-blue-4: "#5c4113"
    comp-blue-5: "#14273a"
    comp-blue-6: "#f5bf64"
    triad-blue-olive: "#7f9101" # https://color.adobe.com/create/color-wheel
    triad-blue-red: "#910c01"
    triad-blue-blue: "#014791"
    square-blue-green: "#1d8f01" # https://color.adobe.com/create/color-wheel
    square-blue-orange: "#8f5a01"
    square-blue-blue: "#01488f"
    square-blue-purple: "#8f0170"
    blue-d50: "#002554" # colorspace::darken("#014691", 0.50)
    blue-l25: "#4f70b7"
    gray-l50: "#c1bfc4" # colorspace::lighten("#868489", 0.50)
    gray-l75: "#b9b9b9"
    gray-l90: "#e2e2e2"
    gray-l95: "#f1f1f1"
  background: white
  primary: blue
  secondary: gray
  tertiary: black
  success: square-blue-green
  info: square-blue-blue
  warning: square-blue-orange
  danger: triad-blue-red
  light: white
  dark: black

typography:
  fonts:
    - family: Montserrat
      source: google
    - family: Roboto
      source: google
    - family: Roboto Mono
      source: google
  base:
    family: Roboto
    line-height: 1.5
    weight: normal
  headings:
    family: Montserrat
    color: blue
    line-height: 1.25
    weight: 800
  monospace: Roboto Mono
  monospace-inline:
    color: comp-blue-1
    background-color: gray-l95
  monospace-block:
    background-color: gray-l95
  link:
    color: comp-blue-1
    decoration: none

Set the Environment

Load Packages

Bar Plots

Code
penguins |>
  ggplot(
    aes(
      x = sex,
      fill = species
    )
  ) +
  geom_bar(alpha = 0.8) +
  facet_wrap(vars(species), ncol = 1) +
  scale_fill_brand_d() +
  coord_flip() +
  labs(
    x = "Island",
    y = "Frequency",
    fill = "Species"
  )

Histograms

Code
penguins |>
  drop_na(
    flipper_length_mm,
    species
  ) |>
  ggplot(
    aes(
      x = flipper_length_mm,
      fill = species
    )
  ) +
  geom_histogram(
    bins = 30,
    alpha = 0.5,
    position = "identity"
  ) +
  scale_fill_brand_d() +
  labs(
    x = "Flipper Length (mm)",
    y = "Frequency",
    fill = "Species"
  )

Boxplots

Code
penguins |>
  drop_na(
    bill_length_mm,
    species
  ) |>
  ggplot(
    aes(
      x = species,
      y = bill_length_mm,
      fill = species
    )
  ) +
  geom_boxplot(
    outlier.color = get_brand_color("dark-red")
  ) +
  geom_jitter(
    width = 0.2,
    alpha = 0.1
  ) +
  scale_fill_brand_d(alpha = 0.7) +
  labs(
    x = "Species",
    y = "Bill Length (mm)",
    fill = "Species"
  )
#> ! The color dark-red was not found in the `_brand.yml` file.

Density

Code
penguins |>
  drop_na(
    flipper_length_mm,
    species
  ) |>
  ggplot(
    aes(
      x = flipper_length_mm,
      fill = species
    )
  ) +
  geom_density(
    alpha = 0.5,
    position = "identity"
  ) +
  scale_fill_brand_d() +
  labs(
    x = "Flipper Length (mm)",
    y = "Density",
    fill = "Species"
  ) +
  theme(
    legend.position = "none"
  )

Scatterplots

Code
penguins |>
  drop_na(
    body_mass_g,
    flipper_length_mm,
    species
  ) |>
  ggplot(
    aes(
      x = body_mass_g,
      y = flipper_length_mm,
      color = species,
      shape = species
    )
  ) +
  geom_point(size = 2) +
  geom_smooth(
    method = "lm",
    formula = y ~ x,
    se = FALSE
  ) +
  scale_color_brand_d(alpha = 0.7) +
  labs(
    x = "Body Mass (g)",
    y = "Flipper Length (mm)",
    color = "Species",
    shape = "Species"
  )

Maps

Code
brazil_states <- read_state()
Code
data <-
  brazil_states |>
  mutate(
    n = sample(
      1:1000,
      size = n(),
      replace = TRUE
    ),
  )
Code
plot <-
  data |>
  ggplot() +
  geom_sf(
    aes(fill = n),
    color = get_brand_color("gray")
  ) +
  scale_fill_brand_b(
    n.breaks = 6
  ) +
  labs(fill = NULL) +
  annotation_scale(
    location = "br",
    style = "tick",
    width_hint = 0.25,
    height = unit(0.15, "cm")
  ) +
  annotation_north_arrow(
    location = "br",
    height = unit(2, "lines"),
    width = unit(2, "lines"),
    pad_x = unit(0.25, "lines"),
    pad_y = unit(1.25, "lines"),
    style = north_arrow_fancy_orienteering
  )

Continuous

Code
plot
#> Scale on map varies by more than 10%, scale bar may be inaccurate

Diverging

Code
plot +
  scale_fill_brand_b(
    color_type = "div",
    n.breaks = 6
  )
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale on map varies by more than 10%, scale bar may be inaccurate

Logo Pattern

See the logo-pattern repository to learn how to create these patterns.

License

License: GPLv3 License: CC BY-NC-SA 4.0

The code in this report is licensed under the GNU General Public License Version 3, while the report is available under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.

Copyright (C) 2026 Center for Metropolitan Studies

The code in this report is free software: you can redistribute it and/or
modify it under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your option)
any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program. If not, see <https://www.gnu.org/licenses/>.

Acknowledgments

CEM Logo
This work was developed with support from the Center for Metropolitan Studies (CEM) based at the School of Philosophy, Letters and Human Sciences (FFLCH) of the University of São Paulo (USP) and at the Brazilian Center for Analysis and Planning (CEBRAP).
FAPESP Logo
This work was financed, in part, by the São Paulo Research Foundation (FAPESP), Brazil. Process Number 2025/17879-2.