2 votes

Valeur de départ de l'axe x pour le tracé divergent

Comment puis-je modifier la "valeur de départ de l'axe des x" du graphique à barres divergentes ci-dessous (extrait de aquí ), de sorte que l'axe vertical est fixé à 25 au lieu de 0. Et donc les barres sont tracées à partir de 25 et non de 0.

Par exemple, je veux ce graphique :

enter image description here

Pour ressembler à ça :

enter image description here


EDITAR Ce n'est pas le étiquette Je veux changer, c'est comme ça que le données est tracé. Je m'excuse si je n'ai pas été clair. Voir l'exemple ci-dessous :

Un autre exemple pour que ce soit clair :

enter image description here

5voto

Konrad Rudolph Points 231505

Vous pouvez fournir des étiquettes calculées à une échelle (x) via scale_x_continuous(labels = function (x) x + 25) .

Si vous souhaitez également modifier le données vous devrez d'abord décaler le x- valeurs d'un montant équivalent (dans la direction opposée) :

Exemple :

df = tibble(Color = c('red', 'green', 'blue'), Divergence = c(5, 10, -5))
offset = 2

df %>%
    mutate(Divergence = Divergence - offset) %>% 
    ggplot() +
    aes(x = Divergence, y = Color) +
    geom_col() +
    scale_x_continuous(labels = function (x) x + offset)

enter image description here

2voto

jared_mamrot Points 6825

Je ne suis pas encore tout à fait sûr du résultat que vous souhaitez obtenir, mais vous pouvez "décaler" vos données en ajoutant/soustrayant 25 à chaque valeur, par ex.

L'intrigue originale :

library(tidyverse)
library(gapminder)

set.seed(123)

gapminder_subset <- gapminder %>% 
  pivot_longer(-c(country, continent, year)) %>% 
  filter(year == "1997" | year == "2007") %>% 
  select(-continent) %>% 
  filter(name == "gdpPercap") %>% 
  pivot_wider(names_from = year) %>% 
  select(-name) %>% 
  mutate(gdp_change = ((`2007` - `1997`) / `1997`) * 100) %>% 
  sample_n(15)

ggplot(data = gapminder_subset,
       aes(x = country, y = gdp_change)) +
  geom_bar(stat = "identity") +
  coord_flip()

example_3.png

soustraire 25 :

library(tidyverse)
library(gapminder)

set.seed(123)

gapminder_subset <- gapminder %>% 
  pivot_longer(-c(country, continent, year)) %>% 
  filter(year == "1997" | year == "2007") %>% 
  select(-continent) %>% 
  filter(name == "gdpPercap") %>% 
  pivot_wider(names_from = year) %>% 
  select(-name) %>% 
  mutate(gdp_change = ((`2007` - `1997`) / `1997`) * 100) %>% 
  sample_n(15)

ggplot(data = gapminder_subset,
       aes(x = country, y = gdp_change)) +
  geom_bar(stat = "identity") +
  coord_flip()

example_4.png

Si vous combinez cela avec mon réétiquetage original, je pense que c'est la solution :

ggplot(data = gapminder_subset,
       aes(x = country, y = gdp_change - 25)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  scale_y_continuous(breaks = c(-25, 0, 25, 50),
                     labels = c(0, 25, 50, 75))

example_5.png

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X