Jak utworzyć skalę logarytmiczną w ggplot2


Często możesz chcieć przekonwertować skalę osi x lub y wykresu ggplot2 na skalę logarytmiczną.

Aby to zrobić, możesz użyć jednej z dwóch metod, używając tylko ggplot2:

1. Użyj skali_y_ciągłej() lub skali_x_ciągłej()

 ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans=' log10 ') +
  scale_x_continuous(trans=' log10 ')

2. Użyj współrzędnych_trans()

 ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  coord_trans(y = ' log10 ' , x=' log10 ')

Jeśli chcesz sformatować etykiety osi tak, aby wyświetlały wykładniki, możesz skorzystać z funkcji pakietu Scales :

 ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans=' log10 ',
                     breaks= trans_breaks (' log10 ', function (x) 10^x),
                     labels= trans_format (' log10 ', math_format (10^.x)))

W tym samouczku przedstawiono przykłady wykorzystania tych funkcji w praktyce.

Przykład 1: Skala logarytmiczna przy użyciu funkcji Scale_y_continuous()

Poniższy kod ilustruje sposób użycia funkcjiscale_y_continuous () do utworzenia skali logarytmicznej dla osi y wykresu punktowego:

 library (ggplot2)

#create data frame
df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18),
                 y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000))

#create scatterplot with log scale on y-axis
ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans=' log10 ')

Skala logarytmiczna na osi Y ggplot2

Przykład 2: skala logarytmiczna przy użyciu coord_trans()

Poniższy kod ilustruje sposób użycia funkcji coord_trans() do utworzenia skali logarytmicznej dla osi Y wykresu punktowego:

 library (ggplot2)

#create data frame
df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18),
                 y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000))

#create scatterplot with log scale on y-axis
ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  coord_trans(y=' log10 ') 

Skala logarytmiczna ggplot2

Przykład 3: Niestandardowe etykiety skali logarytmicznej

Poniższy kod pokazuje, jak używać funkcji pakietu Scales do tworzenia skali logarytmicznej dla osi Y wykresu rozrzutu i dodawania niestandardowych etykiet z wykładnikami:

 library (ggplot2)
library (scales)

#create data frame
df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18),
                 y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000))

#create scatterplot with log scale on y-axis and custom labels
ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans=' log10 ',
                     breaks= trans_breaks (' log10 ', function (x) 10^x),
                     labels= trans_format (' log10 ', math_format (10^.x))) 

Skala logarytmiczna z wykładnikami w ggplot2

Należy zauważyć, że etykiety osi Y mają wykładniki, w przeciwieństwie do poprzednich dwóch wykresów.

Dodatkowe zasoby

Kompletny przewodnik po tytułach ggplot2
Kompletny przewodnik po najlepszych motywach ggplot2
Jak tworzyć wykresy obok siebie w ggplot2

Dodaj komentarz

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