0
votes

ggplot2 Comment changer le graphique des données ggplot2 en mes propres données?

J'ai réussi à créer de petits graphiques radar multiples en utilisant le package ggplot2 'msleep', comme ci-dessous.

msleep radar charts

Mais quand je charge mon propre jeu de données et essaie de tracer en utilisant mes propres données, j'obtiens toujours l'erreur suivante:

Erreur de sélection (pays, démocratie, liberté, corruption):
objet 'pays' introuvable

Voici le code original:

# prepare data
library(ggradar)
library(scales)
library(dplyr)

radarData <- read.csv(file="Index_Data - radar-chart-wide (2).csv")

radarData
  select(country, democracy, freedom, corruption) %>%
  rename(country = groups) %>%
  mutate_at(vars(-country),
            funs(rescale))
  radarData

Et voici mon code qui me lance l'erreur:

# prepare data
data(msleep, package = "ggplot2")
library(ggradar)
library(scales)
library(dplyr)

plotdata <- msleep %>%
  filter(name %in% c("Cow", "Dog", "Pig")) %>%
  select(name, sleep_total, sleep_rem, 
         sleep_cycle, brainwt, bodywt) %>%
  rename(group = name) %>%
  mutate_at(vars(-group),
            funs(rescale))
plotdata

# generate radar chart
ggradar(plotdata, 
        grid.label.size = 4,
        axis.label.size = 4, 
        group.point.size = 5,
        group.line.width = 1.5,
        legend.text.size= 10) +
  labs(title = "Mammals, size, and sleep")


2 commentaires

Bienvenue dans Stack Overflow! Pourriez-vous rendre votre problème reproductible en partageant un échantillon de vos données afin que d'autres puissent vous aider (veuillez ne pas utiliser str () , head () ou capture d'écran)? Vous pouvez utiliser les reprex et < a href = "https://cran.r-project.org/web/packages/datapasta/vignettes/how-to-datapasta.html" rel = "nofollow noreferrer"> datapasta des packages pour vous aider. Voir aussi Aidez-moi à vous aider & Comment créer un excellent exemple R reproductible?


tout d'abord, il semble y avoir un %>% manquant, juste avant select (...)


3 Réponses :


0
votes

Je pense que le problème ici est avec l'appel renommer . Il suit la syntaxe

df <- radarData %>% 
  select(country, democracy, freedom, corruption) %>%
  mutate_at(vars(-country),
            funs(rescale))
df

mais vous l'avez utilisé dans l'autre sens.

Quoi qu'il en soit, puisque vous faites référence à la colonne country dans le mutate_at après cela, vous voudrez probablement garder le nom tel quel. Vous pouvez donc omettre l'appel à rename:

rename(new_name = old_name)


0 commentaires

0
votes

Merci pour votre aide. Je l'ai fait fonctionner et j'ai raccourci les données pour plus de facilité ...

Voici le code:

# prepare data
library(ggradar)
library(scales)
library(dplyr)
library(ggplot2)

radarDataShort <- read.csv(file="Index_Data - radar-chart-wide2 (1).csv")

dfShort <- radarDataShort %>%
  select(country, democracy, freedom, corruption) %>%
  #mutate_at(vars(),
  mutate_at(vars(-country),
            funs(rescale))
dfShort

# generate radar chart
ggradar(dfShort, 
        grid.label.size = 4,
        axis.label.size = 4, 
        group.point.size = 0,
        group.line.width = 1) +
facet_wrap(~country)

graphique radar

Cependant, lorsque j'essaye de facet_wrap, j'obtiens l'erreur suivante:

Erreur: au moins un calque doit contenir toutes les variables de facettes: pays . * Le tracé ne contient pas de pays * La couche 1 n'a pas de pays * La couche 2 n'a pas de pays * La couche 3 n'a pas de pays * La couche 4 n'a pas de pays * La couche 5 n'a pas de pays * La couche 6 n'a pas de pays * La couche 7 n'a pas de pays * La couche 8 n'a pas de pays * La couche 9 n'a pas de pays * La couche 10 n'a pas de pays * La couche 11 n'a pas de pays * La couche 12 n'a pas de pays * La couche 13 est manquante country

Et voici mon dernier code avec le facet_wrap

install.packages("devtools")
devtools::install_github("ricardo-bion/ggradar")

# prepare data
library(ggradar)
library(scales)
library(dplyr)
library(ggplot2)

radarDataShort <- read.csv(file="Index_Data - radar-chart-wide2 (1).csv")

dfShort <- radarDataShort %>%
  select(country, democracy, freedom, corruption) %>%
  #mutate_at(vars(),
  mutate_at(vars(-country),
            funs(rescale))
dfShort

# generate radar chart
ggradar(dfShort, 
        grid.label.size = 4,
        axis.label.size = 4, 
        group.point.size = 0,
        group.line.width = 1) 

Merci encore!


0 commentaires

0
votes

Je l'ai compris. Pour une raison quelconque, le facet_wrap requis (~ group) et NOT (~ country). Je ne sais pas pourquoi, car le groupe n'est pas inclus dans mes données. C'est peut-être une fonction générique dans ggradar?

Merci quand même!


0 commentaires