Wykres punktowy w R przy użyciu ggplot2 (z przykładem)

Wykresy stanowią trzecią część procesu analizy danych. Pierwsza część dotyczy ekstrakcja danych, o czym traktuje druga część czyszczenie i manipulowanie danymi. W końcu analityk danych może tego potrzebować przedstawić swoje wyniki w formie graficznej.

Pracę naukowca zajmującego się danymi można przedstawić na poniższym obrazku

  • Pierwszym zadaniem analityka danych jest zdefiniowanie pytania badawczego. To pytanie badawcze zależy od celów i założeń projektu.
  • Następnie jednym z najważniejszych zadań jest inżynieria funkcji. Analityk danych musi gromadzić dane, manipulować nimi i je czyścić
  • Po zakończeniu tego kroku może rozpocząć eksplorację zbioru danych. Czasami ze względu na nowe odkrycie konieczne jest udoskonalenie i zmiana pierwotnej hipotezy.

Wykres punktowy w R

  • Podczas wyjaśniający analiza danych zostanie osiągnięta, badacz danych musi wziąć pod uwagę możliwości czytelnika zrozumieć podstawowe koncepcje i modele.
  • Jego wyniki należy przedstawić w formacie zrozumiałym dla wszystkich zainteresowanych stron. Jedna z najlepszych metod komunikować wyniki są przez a wykres.
  • Wykresy są niesamowitym narzędziem pozwalającym na uproszczenie złożonych analiz.

pakiet ggplot2

Ta część samouczka skupia się na tworzeniu wykresów/wykresów za pomocą języka R.

W tym samouczku będziesz używać pakietu ggplot2. Pakiet ten opiera się na spójnych podstawach książki Gramatyka grafiki napisanej przez Wilkinsona w 2005 roku. ggplot2 jest bardzo elastyczny, zawiera wiele tematów i specyfikacji fabuły na wysokim poziomie abstrakcji. Dzięki ggplot2 nie można drukować grafiki trójwymiarowej i tworzyć grafiki interaktywnej.

W programie ggplot2 wykres składa się z następujących argumentów:

  • dane
  • mapowanie estetyczne
  • obiekt geometryczny
  • przekształcenia statystyczne
  • waga
  • system współrzędnych
  • korekty pozycji
  • fasetowanie

W samouczku dowiesz się, jak kontrolować te argumenty.

Podstawowa składnia ggplot2 to:

ggplot(data, mapping=aes()) +
geometric object 

arguments: 
data: Dataset used to plot the graph
mapping: Control the x and y-axis 
geometric object: The type of plot you want to show. The most common object are:
 
- Point: `geom_point()` 
- Bar: `geom_bar()`
- Line: `geom_line()` 
- Histogram: `geom_histogram()`

Wykres punktowy

Zobaczmy, jak ggplot współpracuje ze zbiorem danych mtcars. Zaczynasz od wykreślenia wykresu rozrzutu zmiennej mpg i zmiennej drat.

Podstawowy wykres punktowy

library(ggplot2)
ggplot(mtcars, aes(x = drat, y = mpg)) +
    geom_point()

Objaśnienie kodu

  • Najpierw przekazujesz zbiór danych mtcars do ggplot.
  • Wewnątrz argumentu aes() dodajesz oś x i oś y.
  • Znak + oznacza, że ​​chcesz, aby R nadal czytał kod. Kod staje się bardziej czytelny, ponieważ go łamie.
  • Użyj geom_point() dla obiektu geometrycznego.

Wyjście:

Podstawowy wykres punktowy

Wykres punktowy z grupami

Czasami interesujące może być rozróżnienie wartości na podstawie grupy danych (tj. danych na poziomie czynnika).

ggplot(mtcars, aes(x = mpg, y = drat)) +
    geom_point(aes(color = factor(gear)))

Objaśnienie kodu

  • Funkcja aes() wewnątrz funkcji geom_point() kontroluje kolor grupy. Grupa powinna być zmienną czynnikową. W ten sposób przekształcasz zmienne biegi we współczynnik.
  • W sumie masz kod aes(color = Factor(Gear)), który zmienia kolor kropek.

Wyjście:

Wykres punktowy z grupami

Zmień oś

Przeskalowanie danych to duża część pracy analityka danych. W rzadkich przypadkach dane mają ładny kształt dzwonu. Jednym ze sposobów zmniejszenia wrażliwości danych na wartości odstające jest ich przeskalowanie.

ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
    geom_point(aes(color = factor(gear)))

Objaśnienie kodu

  • Zmienne x i y przekształcasz w log() bezpośrednio w mapowaniu aes().

Należy zauważyć, że można zastosować dowolną inną transformację, taką jak standaryzacja lub normalizacja.

Wyjście:

Zmień oś

Wykres punktowy z dopasowanymi wartościami

Do wykresu można dodać inny poziom informacji. Można wykreślić dopasowaną wartość regresji liniowej.

my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
    geom_point(aes(color = factor(gear))) +
    stat_smooth(method = "lm",
        col = "#C42126",
        se = FALSE,
        size = 1)
my_graph

Objaśnienie kodu

  • graph: Przechowujesz swój graph w zmiennej graph. Jest to pomocne do dalszego wykorzystania lub uniknięcia zbyt złożonych linii kodów
  • Argument stat_smooth() steruje metodą wygładzania
  • metoda = „lm”: Regresja liniowa
  • col = „#C42126”: Kod czerwonego koloru linii
  • se = FALSE: Nie wyświetlaj błędu standardowego
  • size = 1: rozmiar linii wynosi 1

Wyjście:

Wykres punktowy z dopasowanymi wartościami

Należy pamiętać, że dostępne są inne metody wygładzania

  • glm
  • gam
  • less: wartość domyślna
  • obręcz

Dodaj informacje do wykresu

Do tej pory nie dodaliśmy informacji do wykresów. Wykresy muszą być informacyjne. Czytelnik powinien zobaczyć historię stojącą za analizą danych, po prostu patrząc na wykres, bez odwoływania się do dodatkowej dokumentacji. Dlatego wykresy potrzebują dobrych etykiet. Możesz dodać etykiety za pomocą funkcji labs().

Podstawowa składnia lab() jest następująca:

lab(title = "Hello Guru99")
argument:
- title: Control the title. It is possible to change or add title with:			
- subtitle: Add subtitle below title			
- caption: Add caption below the graph			
- x: rename x-axis			
- y: rename y-axis			
Example:lab(title = "Hello Guru99", subtitle = "My first plot")	

Dodaj tytuł

Obowiązkową informacją, którą należy dodać, jest oczywiście tytuł.

my_graph +
    labs(
        title = "Plot Mile per hours and drat, in log"
         )

Objaśnienie kodu

  • my_graph: Używasz zapisanego wykresu. Pozwala to uniknąć przepisywania wszystkich kodów za każdym razem, gdy dodajesz nowe informacje do wykresu.
  • Zawijasz tytuł wewnątrz laboratorium().
  • Kod czerwonego koloru linii
  • se = FALSE: Nie wyświetlaj błędu standardowego
  • size = 1: rozmiar linii wynosi 1

Wyjście:

Dodaj tytuł

Dodaj tytuł z dynamiczną nazwą

Tytuł dynamiczny jest pomocny w dodaniu bardziej precyzyjnych informacji w tytule.

Funkcji paste() można używać do drukowania tekstu statycznego i tekstu dynamicznego. Podstawowa składnia paste() jest następująca:

paste("This is a text", A)
arguments
- " ": Text inside the quotation marks are the static text
- A: Display the variable stored in A
- Note you can add as much static text and variable as you want. You need to separate them with a comma	

Przykład:

A <-2010
paste("The first year is", A)

Wyjście:

## [1] "The first year is 2010"
B <-2018

paste("The first year is", A, "and the last year is", B)

Wyjście:

## [1] "The first year is 2010 and the last year is 2018"

Do naszego wykresu możesz dodać dynamiczną nazwę, a mianowicie średnią mpg.

mean_mpg <- mean(mtcars$mpg)
my_graph + labs(
    title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg)
)

Objaśnienie kodu

  • Tworzysz średnią mpg za pomocą średniej (mtcars$mpg) zapisanej w zmiennej mean_mpg
  • Używasz funkcji paste() z mean_mpg, aby utworzyć dynamiczny tytuł zwracający średnią wartość mpg

Wyjście:

Dodaj tytuł z dynamiczną nazwą

Dodaj podtytuł

Dwa dodatkowe szczegóły mogą sprawić, że Twój wykres będzie bardziej przejrzysty. Mówisz o podtytule i podpisie. Podtytuł znajduje się tuż pod tytułem. Podpis może informować o tym, kto wykonał obliczenia i o źródle danych.

my_graph +
    labs(
        title =
        "Relation between Mile per hours and drat",
        subtitle =
        "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Objaśnienie kodu

  • Wewnątrz laboratorium() dodałeś:
    • title = „Związek między milą na godzinę a drat”: Dodaj tytuł
    • subtitle = „Podział relacji według klasy sprzętu”: Dodaj podtytuł
    • caption = „Własne obliczenia autora: Dodaj podpis
    • Każdą nową informację oddzielasz przecinkiem, ,
  • Pamiętaj, że łamiesz linie kodu. Nie jest to obowiązkowe, a jedynie pomaga w łatwiejszym czytaniu kodu

Wyjście:

Dodaj podtytuł

Zmień nazwę osi X i Y

Same zmienne w zestawie danych nie zawsze mogą być jawne lub zgodnie z konwencją używać _, gdy jest wiele słów (np. GDP_CAP). Nie chcesz, aby taka nazwa pojawiała się na wykresie. Ważne jest, aby zmienić nazwę lub dodać więcej szczegółów, takich jak jednostki.

my_graph +
    labs(
        x = "Drat definition",
        y = "Mile per hours",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Objaśnienie kodu

  • Wewnątrz laboratorium() dodałeś:
    • x = „Definicja pochylenia”: Zmień nazwę osi X
    • y = „Mila na godzinę”: Zmień nazwę osi y

Wyjście:

Zmień nazwę osi x i osi y

Kontroluj wagę

Możesz kontrolować skalę osi.

Funkcja seq() jest wygodna, gdy trzeba utworzyć ciąg liczb. Podstawowa składnia to:

seq(begin, last, by = x)
arguments:
- begin: First number of the sequence
- last: Last number of the sequence
- by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`	

Na przykład, jeśli chcesz utworzyć zakres od 0 do 12 z krokiem 3, będziesz mieć cztery liczby: 0 4 8 12

seq(0, 12,4)

Wyjście:

## [1]  0  4  8 12

Możesz kontrolować skalę osi X i Y, jak poniżej

my_graph +
    scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +
    scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +
    labs(
        x = "Drat definition",
        y = "Mile per hours",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Objaśnienie kodu

  • Funkcja Scale_y_continuous() steruje osi y
  • Funkcja Scale_x_continuous() steruje oś x.
  • Parametr breaks steruje podziałem osi. Możesz ręcznie dodać sekwencję liczb lub użyć funkcji seq():
    • seq(1, 3.6, by = 0.2): Utwórz sześć liczb od 2.4 do 3.4 z krokiem 3
    • seq(1, 1.6, by = 0.1): Utwórz siedem liczb od 1 do 1.6 z krokiem 1

Wyjście:

Kontroluj wagę

Motyw

Wreszcie R pozwala nam dostosować fabułę za pomocą różnych motywów. Biblioteka ggplot2 zawiera osiem motywów:

  • motyw_bw()
  • światło_motywu()
  • klasa_motywu()
  • motyw_linedraw()
  • motyw_ciemny()
  • temat_minimalny()
  • motyw_szary()
  • motyw_pustki()
my_graph +
    theme_dark() +
    labs(
        x = "Drat definition, in log",
        y = "Mile per hours, in log",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Wyjście:

Motyw

Zapisz działki

Po wykonaniu wszystkich tych kroków nadszedł czas na zapisanie i udostępnienie wykresu. Dodajesz ggsave('NAZWA PLIKU) zaraz po wykreśleniu wykresu i zostanie on zapisany na dysku twardym.

Wykres zostaje zapisany w katalogu roboczym. Aby sprawdzić katalog roboczy, możesz uruchomić ten kod:

directory <-getwd()
directory

Narysujmy Twój fantastyczny wykres, zapiszmy go i sprawdźmy lokalizację

my_graph +
    theme_dark() +
    labs(
        x = "Drat definition, in log",
        y = "Mile per hours, in log",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Wyjście:

Zapisz działki

ggsave("my_fantastic_plot.png")

Wyjście:

## Saving 5 x 4 in image

Note: Wyłącznie do celów pedagogicznych stworzyliśmy funkcję o nazwie open_folder(), która umożliwia otwarcie folderu katalogu. Wystarczy uruchomić poniższy kod i sprawdzić, gdzie przechowywany jest obraz. Powinieneś zobaczyć plik o nazwie my_fantastic_plot.png.

# Run this code to create the
function
open_folder <- function(dir) {
    if (.Platform['OS.type'] == "windows") {
        shell.exec(dir)
    } else {
        system(paste(Sys.getenv("R_BROWSER"), dir))
    }
}

# Call the
function to open the folder open_folder(directory)

Podsumowanie

Podsumowanie argumentów potrzebnych do utworzenia wykresu punktowego można znaleźć w poniższej tabeli:

Cel Code
Podstawowy wykres punktowy
ggplot(df, aes(x = x1, y = y)) + geom_point()
Wykres punktowy z grupą kolorów
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm")
Dodaj dopasowane wartości
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1))
Dodaj tytuł
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))
Dodaj napisy
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))
Zmień nazwę x
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")
Zmień nazwę y
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")
Kontroluj skalę
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1)
Utwórz dzienniki
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point()
Motyw
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic()
Zapisz
ggsave("my_fantastic_plot.png")