С примером кода и бесплатными наборами данных

Введение

Дело не в том, что ты делаешь, а в том, как ты это делаешь. ― Чери Хубер, Страдания необязательны: три ключа к свободе и радости

Наличие данных, но незнание того, как их визуализировать, — это то, что я называю причинением себе страданий. Итак, как сказала Чери, есть 3 ключа к свободе и радости — моя точка зрения — данные + R + эти 7 пакетов R.

Данные

Вы можете следовать моему коду, используя наборы данных, которые я выбрал, или вы можете использовать свои собственные. Вот несколько отличных ресурсов по поиску бесплатных наборов данных с открытым исходным кодом:

  1. Где найти бесплатные наборы данных и как узнать, хорошего ли они качества, Мэтт Дэвид (2021 г.).
  2. В R встроены наборы данных. R позволяет вам использовать эти наборы данных для коммерческого использования в рамках Стандартной общественной лицензии GNU.
  3. Это лучшие бесплатные открытые источники данных, которые может использовать каждый, Хирен Патель (2019 г.)».

7 (нефатальных) пакетов R

1. ГРУППА 2

Начнем с исходной библиотеки, которая делает R лучшим языком для визуализации — ggplot2. Я использую набор данных от Kaggle, который вы можете найти здесь (Sustainable Development Solutions Network, 2019, Лицензия CC0: Public Domain). Данные смотрят на состояние глобального счастья:

Код

### GGPLOT2 EXAMPLE CODE
### LOAD KAGGLE DATA (Sustainable Development Solutions Network, 2019, License CC0: Public Domain)
#Load packages
library(openxlsx)
library(ggplot2)
library(RColorBrewer)
#Read in the first worksheet from the Excel workbook HappinessAlcoholConsumption.xlsx
library(dplyr)
data("happy", package = "ggplot2")
happy <- read.xlsx("2019_happiness.xlsx", sheet = '2019_happiness')
#Top 30 countries
happy %>%
  group_by(Country) %>% 
  summarise(HappinessScore_Avg = mean(Score)) %>%
  top_n(30) %>%
#The average happiness score for each country in the Top 30
ggplot(aes(x=reorder(factor(Country), HappinessScore_Avg), y=HappinessScore_Avg, fill = HappinessScore_Avg)) + 
  geom_bar(stat = "identity") + 
  xlab("Country") + 
  ylab("Average Happiness Score") +
# Make sure axes start at 0
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
# Choose a theme, axis title sizes and labelling
theme(legend.position ='none',axis.title.y = element_text(size=8), axis.text.y = element_text(size = 8), axis.title.x = element_text(size=5),axis.text.x = element_text(size = 5), plot.title = element_text(size=10, hjust = 0.5)) +
  scale_fill_gradientn(name = '',colours = rev(brewer.pal(5,'Spectral'))) +
  geom_text(aes(label = HappinessScore_Avg), hjust = -0.3, size = 2) + ggtitle("Top 30 Countries by Happiness Score") +
  coord_flip()

Библиотека расширения для ggplot2 называется ggforce и быларазработанаТомасом Педерсеном. Он имеет дополнительную функцию выделения различных групп и их специфических особенностей в ваших данных, помогая вам более эффективно рассказать свою историю. Вы можете увидеть несколько примеров ggforce здесь.

2. Палитра цветов

Не тратьте время на гугление шестнадцатеричных кодов цветов, которые вы хотите использовать — лучше используйте ColourPicker! Это особенно полезно, если вам необходимо придерживаться индивидуальной цветовой палитры. Смотрите демо ниже:

Вот код, который я использовал в демо:

##Colour Picker using R's built-in dataset called mtcars(mtcars source:Henderson and Velleman (1981), Building multiple regression models interactively. Biometrics, 37, 391–411)
#Install necessary libraries
library(ggplot2)
library(ggcorrplot)
install.packages("colourpicker")
library(colourpicker)
cols <- colourPicker()  #the screen will pop up after this line 
cols  # return the names of the colours selected
# Create a correlation matrix using R's built in dataset - mtcars
data(mtcars)
corr <- round(cor(mtcars), 1)
# Plot mtcars
ggcorrplot(corr, hc.order = TRUE, 
           type = "lower", 
           lab = TRUE, 
           lab_size = 2, 
           method="circle", 
           colors = c("red2" ,"white", "dodgerblue2"),
           outline.color = "#0D0C0C",
           title="Correlogram of car specs")

Если вы хотите узнать больше о создании пользовательских палитр, см. статью, которую я написал здесь.

3. Эскиз

Есть данные, но не знаете, как их визуализировать? Или не знаете, как писать код на R? Представляю вам — Esquisse. Пакет esquisse — это программное обеспечение с открытым исходным кодом, созданное Zeno Rocha в 2018 году. Вот — ссылка на репозиторий GitHub.

Для этой демонстрации я собираюсь искать набор данных с открытым исходным кодом, используя Поиск набора данных Google — по сути, Google для наборов данных, которые находятся в свободном доступе:

Он направил меня на Kaggle, где я буду использовать данные, связанные с Marvel and DC Comic data (Говиндарагхаван, С., 2020, Лицензия CC0: Public Domain).

#Import the necessary packages and libraries
install.packages("esquisse")
library(esquisse)
#Run the following:
esquisse::esquisser()

Появится следующий экран:

Здесь вы можете импортировать свои данные, загрузив, вставив, подключившись к листу Google или подключившись к одному из встроенных наборов данных R. После того, как я загрузил данные marvel, я вижу панель предварительного просмотра перед их импортом:

Вот короткая демонстрация того, как работает esquisse:

4. Сюжет

PlotlyR — бесплатная графическая библиотека с открытым исходным кодом. Посмотреть репозиторий GitHub можно здесь. В качестве примера я собираюсь использовать визуализацию пути клиента в Интернете по мере его продвижения по вашей маркетинговой воронке.

# Install plotly from Github to get funnel plots
# Here I make up my own data but the functionality is the purpose of this viz
devtools::install_github("ropensci/plotly")
library(plotly)
fig <- plot_ly() 
fig <- fig %>%
  add_trace(
    type = "funnel",
    y = c("Clicked on Google Ad", "Explored Website", "Downloaded Brochure", "Added to basket", "Made Payment"),
    x = c(100, 80, 10, 9, 7)) 
fig <- fig %>%
  layout(yaxis = list(categoryarray = c("Clicked on Google Ad", "Explored Website", "Downloaded Brochure", "Added to basket", "Made Payment")))
fig

Сразу видно, что проблема заключается в вашем веб-сайте, поскольку именно здесь происходит наибольший отток клиентов, то есть вы теряете большую часть своих клиентов еще до того, как они скачают брошюру. Тем не менее, ваша брошюра кажется очень информативной, поскольку вы охватываете почти всех клиентов, которые скачали ее.

5. Квантмод

Для тех, кто любит анализ акций в качестве хобби или работы, Quantmod для вас. Это все, что связано с финансовым моделированием.

# Install quantmod
install.packages('quantmod')
library(quantmod)
#Select the company/share you want to visualise - I chose Google's shares provided by Yahoo Finance
getSymbols("GOOG",src="yahoo") 
#Plot 1: Cumulative Interest of Google Stocks Over Time
plot(Cl(GOOG), col = 'black') 

#Plot 2: Candle Chart
candleChart(GOOG,multi.col=TRUE,theme='black', subset = 'last 3 months')

6. РГЛ

RGL — если вам нужно нарисовать что-нибудь в 3D.

#Install RGL
install.packages("rgl")
library("rgl")
#The next line of code produces a demo of what RGL can visualise. Follow the prompts in your console, but after pressing enter, it will produce a number of 3D visualisations
demo(rgl)

Вот несколько примеров, созданных демо:

7. Пэчворк

Наконец, как насчет объединения всех ваших визуализаций? Пэчворк был создан Thomas Lin Pedersen в 2017 году, чтобы упростить задачу. Вы можете скачать его из CRAN и здесь — это репозиторий GitHub.

#Install packages
devtools::install_github("thomasp85/patchwork")
library(ggplot2)
library(patchwork)
# All you need to do is assign you visualisation to a variable:
#Viz 1 - named p1
p1 <-happy %>%
  group_by(Country) %>% 
  summarise(HappinessScore_Avg = mean(Score)) %>%
  top_n(30) %>%  
  ggplot(aes(x=reorder(factor(Country), HappinessScore_Avg), y=HappinessScore_Avg, fill = HappinessScore_Avg)) + 
  geom_bar(stat = "identity") + 
  xlab("Country") + 
  ylab("Average Happiness Score") + 
 scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
  theme(legend.position ='none',axis.title.y = element_text(size=8), axis.text.y = element_text(size = 8), axis.title.x = element_text(size=5),axis.text.x = element_text(size = 5), plot.title = element_text(size=10, hjust = 0.5)) +
  scale_fill_gradientn(name = '',colours = rev(brewer.pal(5,'Spectral'))) +
  geom_text(aes(label = HappinessScore_Avg), hjust = -0.3, size = 2) +
  ggtitle("Top 30 Countries by Happiness Score") +
  coord_flip()
#Viz 2- named p2
p2 <- ggcorrplot(corr, hc.order = TRUE, 
           type = "lower", 
           lab = TRUE, 
           lab_size = 2, 
           method="circle", 
           colors = c("red2" ,"white", "dodgerblue2"),
           outline.color = "#0D0C0C",
           title="Correlogram of car specs")
#Return the saved visualisations as below:
p1 +  p2

Вывод будет выглядеть следующим образом:

Кроме того, вот руководство о том, как соединить ваши графики вместе, используя различные стили и аннотации, чтобы привести их в порядок.

Заключение

Теперь вы полностью подготовлены для изучения интересных наборов данных. Каждый из этих пакетов R имеет множество примеров в собственной документации и репозиториях. Я рекомендую вам выбрать интересующий вас набор данных и погрузиться в эти библиотеки. Если вам понравилась эта статья, вы также можете прочитать — Вот как вы должны визуализировать свои данные: 10 примеров для анализа.

Пожалуйста, рассмотрите возможность использования моей реферальной ссылки, если вы хотите стать участником и сторонником Medium. Ваш членский взнос напрямую поддерживает всех писателей, которых вы читаете. Вы также получите полный доступ ко всем историям на Medium.