Jak naprawić błąd r: wartość dyskretna podana w skali ciągłej
Błąd, który możesz napotkać w R to:
Error: Discrete value supplied to continuous scale
Ten błąd występuje, gdy próbujesz zastosować skalę ciągłą do osi w ggplot2, gdy zmienna na tej osi nie jest numeryczna.
W tym samouczku dokładnie wyjaśniono, jak naprawić ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy następującą ramkę danych w R:
#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
Załóżmy teraz, że próbujemy utworzyć wykres rozrzutu z niestandardową skalą na osi Y, używając argumentuscale_y_continuous () :
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
Otrzymujemy błąd, ponieważ nasza zmienna osi Y jest znakiem, a nie zmienną numeryczną.
Możemy to potwierdzić za pomocą funkcji class( ):
#check class of y variable
class(df$y)
[1] “character”
Jak naprawić błąd
Najłatwiejszym sposobem naprawienia tego błędu jest konwersja zmiennej osi Y na zmienną numeryczną przed utworzeniem wykresu rozrzutu:
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))
Zauważ, że nie otrzymaliśmy żadnych błędów, ponieważ użyliśmy funkcji Scale_y_continuous() ze zmienną numeryczną zamiast zmiennej znakowej.
Pełną dokumentację online funkcji Scale_y_continuous() można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe funkcje kreślenia w ggplot2:
Jak ustawić przerwy osi w ggplot2
Jak usunąć etykiety osi w ggplot2
Jak obracać etykiety osi w ggplot2