Разпръснете парцел в R, използвайки ggplot2 (с пример)

Съдържание:

Anonim

Графиките са третата част от процеса на анализ на данните. Първата част е за извличане на данни , втората част се занимава с почистване и манипулиране на данните . Накрая ученият за данни може да се наложи да съобщи резултатите си графично .

Работата на учения за данни може да бъде разгледана на следващата снимка

  • Първата задача на учения за данни е да определи изследователски въпрос. Този изследователски въпрос зависи от целите и целите на проекта.
  • След това една от най-изявените задачи е инженерингът на функции. Ученият за данни трябва да събира, манипулира и почиства данните
  • Когато тази стъпка приключи, той може да започне да изследва набора от данни. Понякога е необходимо да се усъвършенства и промени първоначалната хипотеза поради ново откритие.

  • Когато се постигне обяснителен анализ, ученият по данни трябва да вземе предвид способността на читателя да разбере основните концепции и модели .
  • Неговите резултати трябва да бъдат представени във формат, който всички заинтересовани страни могат да разберат. Един от най-добрите методи за предаване на резултатите е чрез графика .
  • Графиките са невероятен инструмент за опростяване на сложния анализ.

В този урок ще научите -

  • пакет ggplot2
  • Scatterplot
  • Промяна на оста
  • Разпръснат график с вградени стойности
  • Добавете информация към графиката
  • Преименувайте оста x и оста y
  • Контролирайте везните
  • Тема
  • Запазване на парцели

пакет ggplot2

Тази част от урока се фокусира върху това как да направите графики / диаграми с R.

В този урок ще използвате пакета ggplot2. Този пакет е изграден върху последователната основа на книгата „Граматика на графиките“, написана от Уилкинсън, 2005. ggplot2 е много гъвкав, включва много теми и спецификация на сюжета при високо ниво на абстракция. С ggplot2 не можете да нанасяте триизмерни графики и да създавате интерактивни графики.

В ggplot2 графиката е съставена от следните аргументи:

  • данни
  • естетическо картографиране
  • геометричен обект
  • статистически трансформации
  • везни
  • координатна система
  • корекции на позицията
  • фасетиране

Ще научите как да контролирате тези аргументи в урока.

Основният синтаксис на ggplot2 е:

ggplot(data, mapping=aes()) +geometric objectarguments:data: Dataset used to plot the graphmapping: Control the x and y-axisgeometric 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()`

Scatterplot

Нека да видим как ggplot работи с набора от данни mtcars. Започвате с начертаване на разпръснат график на променливата mpg и drat.

Основен разпръснат парцел

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

Обяснение на кода

  • Първо подавате набора от данни mtcars на ggplot.
  • Вътре в аргумента aes () добавяте оста x и оста y.
  • Знакът + означава, че искате R да продължи да чете кода. Това прави кода по-четлив, като го разбивате.
  • Използвайте geom_point () за геометричния обект.

Изход:

Скатер с групи

Понякога може да е интересно да се разграничат стойностите по група данни (т.е. данни на ниво фактор).

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

Обяснение на кода

  • Aes () вътре в geom_point () контролира цвета на групата. Групата трябва да бъде факторна променлива. По този начин преобразувате променливата предавка във фактор.
  • Като цяло имате кода aes (цвят = фактор (предавка)), който променя цвета на точките.

Изход:

Промяна на оста

Мащабирането на данните е голяма част от работата на учения за данни. В редки случаи данните са в хубава форма на камбана. Едно решение да направите данните си по-малко чувствителни към отклоненията е да ги мащабирате.

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

Обяснение на кода

  • Трансформирате променливите x и y в log () директно в картографирането на aes ().

Имайте предвид, че може да се приложи всяка друга трансформация като стандартизация или нормализация.

Изход:

Разпръснат график с вградени стойности

Можете да добавите друго ниво на информация към графиката. Можете да начертаете вградената стойност на линейна регресия.

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

Обяснение на кода

  • graph: Съхранявате вашата графика в променливата графика. Полезно е за по-нататъшна употреба или за избягване на твърде сложен ред кодове
  • Аргументът stat_smooth () контролира метода на изглаждане
  • method = "lm": Линейна регресия
  • col = "# C42126": Код за червения цвят на линията
  • se = FALSE: Не показвайте стандартната грешка
  • размер = 1: размерът на линията е 1

Изход:

Имайте предвид, че са налични и други методи за изглаждане

  • glm
  • гам
  • льос: стойност по подразбиране
  • джанта

Добавете информация към графиката

Досега не сме добавили информация в графиките. Графиките трябва да са информативни. Читателят трябва да види историята зад анализа на данните само като погледне графиката, без да се позовава на допълнителна документация. Следователно графиките се нуждаят от добри етикети. Можете да добавяте етикети с функцията labs ().

Основният синтаксис за lab () е:

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-axisExample:lab(title = "Hello Guru99", subtitle = "My first plot")

Добавете заглавие

Една задължителна информация за добавяне очевидно е заглавие.

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

Обяснение на кода

  • my_graph: Използвате съхранената от вас графика. Той избягва пренаписването на всички кодове всеки път, когато добавяте нова информация към графиката.
  • Опаковате заглавието в лабораторията ().
  • Код за червения цвят на линията
  • se = FALSE: Не показвайте стандартната грешка
  • размер = 1: размерът на линията е 1

Изход:

Добавете заглавие с динамично име

Динамичното заглавие е полезно за добавяне на по-точна информация в заглавието.

Можете да използвате функцията paste (), за да отпечатате статичен текст и динамичен текст. Основният синтаксис на paste () е:

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

Пример:

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

Изход:

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

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

Изход:

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

Можете да добавите динамично име към нашата графика, а именно средната стойност на mpg.

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

Обяснение на кода

  • Създавате средната стойност на mpg със средна стойност (mtcars $ mpg), съхранена в mean_mpg променлива
  • Използвате paste () с mean_mpg, за да създадете динамично заглавие, връщащо средната стойност на mpg

Изход:

Добавете подзаглавие

Две допълнителни подробности могат да направят графиката ви по-ясна. Говорите за субтитрите и надписа. Подзаглавието е точно под заглавието. Надписът може да информира за това кой е извършил изчислението и източника на данните.

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

Обяснение на кода

  • В лабораторията () добавихте:
    • title = "Връзка между миля в час и drat": Добавете заглавие
    • subtitle = "Разбивка на връзката по клас на предавка": Добавяне на субтитри
    • caption = "Собственото изчисление на авторите: Добавете надпис
    • Отделяте всяка нова информация със запетая,,
  • Имайте предвид, че прекъсвате редовете на кода. Това не е задължително и помага само за по-лесно четене на кода

Изход:

Преименувайте оста x и оста y

Самите променливи в набора от данни може да не са винаги изрични или по конвенция да използват _, когато има множество думи (т.е. GDP_CAP). Не искате такова име да се появява във вашата графика. Важно е да промените името или да добавите повече подробности, като мерните единици.

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")

Обяснение на кода

  • В лабораторията () добавихте:
    • x = "Дефиниция на Drat": Променете името на оста x
    • y = "Миля на час": Променете името на оста y

Изход:

Контролирайте везните

Можете да контролирате мащаба на оста.

Функцията seq () е удобна, когато трябва да създадете последователност от числа. Основният синтаксис е:

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`

Например, ако искате да създадете диапазон от 0 до 12 със стъпка 3, ще имате четири числа, 0 4 8 12

seq(0, 12,4)

Изход:

## [1] 0 4 8 12 

Можете да контролирате мащаба на оста x и оста y както е показано по-долу

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")

Обяснение на кода

  • Функцията scale_y_continuous () контролира оста y
  • Функцията scale_x_continuous () контролира оста x .
  • Параметърът break контролира разделянето на оста. Можете ръчно да добавите поредицата от числа или да използвате функцията seq ():
    • sq (1, 3.6, по = 0.2): Създайте шест числа от 2.4 до 3.4 с стъпка 3
    • seq (1, 1.6, by = 0.1): Създайте седем числа от 1 до 1.6 със стъпка 1

Изход:

Тема

И накрая, R ни позволява да персонализираме сюжета с различни теми. Библиотеката ggplot2 включва осем теми:

  • theme_bw ()
  • тема_светлина ()
  • тема_класис ()
  • theme_linedraw ()
  • theme_dark ()
  • тема_минимална ()
  • theme_gray ()
  • theme_void ()
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")

Изход:

Запазване на парцели

След всички тези стъпки е време да запазите и споделите вашата графика. Добавяте ggsave ('ИМЕ НА ФАЙЛА) веднага след като начертаете графиката и тя ще се съхранява на твърдия диск.

Графиката се записва в работната директория. За да проверите работната директория, можете да изпълните този код:

directory <-getwd()directory 

Нека начертаем вашата фантастична графика, запаметим я и проверим местоположението

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")

Изход:

ggsave("my_fantastic_plot.png.webp")

Изход:

## Saving 5 x 4 in image

Забележка : Само с педагогическа цел създадохме функция, наречена open_folder (), за да отвори папката с директории за вас. Просто трябва да стартирате кода по-долу и да видите къде се съхранява картината. Трябва да видите имена на файлове my_fantastic_plot.png.webp.

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

Обобщение

Можете да обобщите аргументите, за да създадете разпръснат график в таблицата по-долу:

Обективен

Код

Основен разпръснат парцел

ggplot(df, aes(x = x1, y = y)) + geom_point()

Скатер с цветна група

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm")

Добавете монтирани стойности

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1))

Добави заглавие

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))

Добавете субтитри

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))

Преименувайте x

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")

Преименувайте y

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")

Контролирайте скалата

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)

Създаване на дневници

ggplot(df, aes(x =log(x1), y = log(y))) + geom_point()

Тема

ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic()

Запазете

ggsave("my_fantastic_plot.png.webp")