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