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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *