Hoe r-fout op te lossen: discrete waarde verstrekt op continue schaal


Een fout die je tegen kunt komen in R is:

 Error: Discrete value supplied to continuous scale

Deze fout treedt op wanneer u probeert een continue schaal toe te passen op een as in ggplot2, terwijl de variabele op die as niet numeriek is.

In deze tutorial wordt precies uitgelegd hoe u deze fout kunt oplossen.

Hoe de fout te reproduceren

Stel dat we het volgende dataframe in R hebben:

 #create data frame
df = data. frame (x = 1:12,
                y = rep(c('1', '2', '3', '4'), times= 3 ))

#view data frame
df

    xy
1 1 1
2 2 2
3 3 3
4 4 4
5 5 1
6 6 2
7 7 3
8 8 4
9 9 1
10 10 2
11 11 3
12 12 4

Stel nu dat we proberen een spreidingsdiagram te maken met een aangepaste y-asschaal met behulp van het scale_y_continuous() argument:

 library (ggplot2)

#attempt to create scatterplot with custom y-axis scale
ggplot(df, aes (x, y)) +
  geom_point() +
  scale_y_continuous(limits = c(0, 10))

Error: Discrete value supplied to continuous scale

We ontvangen een foutmelding omdat onze variabele op de Y-as een teken is in plaats van een numerieke variabele.

We kunnen dit bevestigen met behulp van de class( ) functie:

 #check class of y variable
class(df$y)

[1] “character”

Hoe u de fout kunt oplossen

De eenvoudigste manier om deze fout op te lossen is door de Y-asvariabele naar een numerieke variabele te converteren voordat u het spreidingsdiagram maakt:

 library (ggplot2) 

#convert y variable to numeric
df$y <- as. numeric (df$y)

#create scatterplot with custom y-axis scale
ggplot(df, aes (x, y)) +
  geom_point() +
  scale_y_continuous(limits = c(0, 10))

Houd er rekening mee dat we geen fouten ontvangen omdat we scale_y_continuous() hebben gebruikt met een numerieke variabele in plaats van een tekenvariabele.

U kunt de volledige online documentatie voor de functie scale_y_continuous() hier vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere algemene plotfuncties in ggplot2 kunt uitvoeren:

Hoe aseinden in ggplot2 in te stellen
Hoe aslabels in ggplot2 te verwijderen
Hoe aslabels te roteren in ggplot2

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert