Introduction to Visualization
Огляд
Викладання: 20 хв
Вправи: 15 хвПитання
What are the basics of creating graphics in R?
Цілі
To be able to use ggplot2 to generate histograms and bar plots.
To apply geometry and aesthetic layers to a ggplot plot.
To manipulate the aesthetics of a plot using different colors and position parameters.
Планування наших даних - є одним з найкращих методів для швидкого дослідження даних та зв’язків між змінними. Існує 3 основні системи плнування в R base plotting system, the lattice пакет, and the ggplot2 пакет. Сьогодні і завтра ми будемо вчити про пакет ggplot2, тому що це найбільш ефективний спосіб для створення якісної графіки. У цьому епізоді, ми представимо ключові особливості ggplot і зробимо кілька прикладів графіків. Ми розширимо ці поняття і побачимо, як вони застосовуються до геопросторових даних, коли почнемо працювати з геопросторовими даними в уроці R for Raster and Vector Data.
ggplot2 is built on the grammar of graphics, the idea that any plot can be expressed from the same set of components: a data set, a coordinate system, and a set of geoms–the visual representation of data points. The key to understanding ggplot2 is thinking about a figure in layers. This idea may be familiar to you if you have used image editing programs like Photoshop, Illustrator, or Inkscape. In this episode we will focus on two geoms
- histograms and bar plot. In the R for Raster and Vector Data lesson we will work with a number of other geometries and learn how to customize our plots.
Почнемо з прикладу побудови
розподілу тривалості життя в нашому файлі даних. Перше, що ми робимо це викликаємо функцію ggplot
. Ця функція дозволяє R
дізнатись, що ми створюємо новий графік, і будь-який агрумент, який ми введемо
у функцію ggplot()
є глобальним варіантом графіку: вони застосовуються до
всіх шарів на графіку.
We will pass in two arguments to ggplot
. First, we tell
ggplot
what data we
want to show on our figure, in this example we use the gapminder data we read in
earlier. For the second argument we pass in the aes()
function, which
tells ggplot
how variables in the data map to aesthetic properties of
the figure. Here we will tell ggplot
we
want to plot the “lifeExp” column of the gapminder data frame on the x-axis. We don’t need to specify a y-axis
for histograms.
library("ggplot2")
ggplot(data = gapminder, aes(x = lifeExp)) +
geom_histogram()
Окремо виклику ggplot
недостаньо для побудови фігури:
ggplot(data = gapminder, aes(x = lifeExp))
Нам потрібно сказати ggplot
як ми хочемо візуально представити дані, які ми
створили, додавши геомний шар. У нашому прикладі, ми використали geom_histogram()
, яка
каже ggplot
, що ми хочемо візуально представити
розподіл однієї змінної (у нашому випадку “lifeExp”):
ggplot(data = gapminder, aes(x = lifeExp)) +
geom_histogram()
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Завдання 1
Змініть приклад так, щоб графік показував розподіл ВВП на душу населення, а не тривалість життя:
Розв’язок до завдання 1
ggplot(data = gapminder, aes(x = gdpPercap)) + geom_histogram()
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Гістограма - це корисний інструмент для візуалізації розподілу єдиної категорійної змінної. Що робити, якщо ми хочемо порівняти показник ВВП на душу населення у нашому наборі даних? Ми можемо використовувати графік рядків (або стовпців). Щоб спростити наш сюжет, давайте подивимось на дані тільки з останніх років і тільки з країн Америки.
gapminder_small <- filter(gapminder, year == 2007, continent == "Americas")
This time, we will use the geom_col()
function as our geometry.
We will plot countries on the x-axis (listed in alphabetic order
by default) and gdp per capita on the y-axis.
ggplot(data = gapminder_small, aes(x = country, y = gdpPercap)) +
geom_col()
With this many bars plotted, it’s impossible to read all of the
x-axis labels. A quick fix to this is the add the coord_flip()
function to the end of our plot code.
ggplot(data = gapminder_small, aes(x = country, y = gdpPercap)) +
geom_col() +
coord_flip()
There are more sophisticated ways of modifying axis labels. We will be learning some of those methods later in this workshop.
Завдання 2
In the previous examples and challenge we’ve used the
aes
function to tell thegeom_histogram()
andgeom_col()
functions which columns of the data set to plot. Another aesthetic property we can modify is the color. Create a new bar (column) plot showing the gdp per capita of all countries in the Americas for the years 1952 and 2007, color coded by year.Solution to challenge 2
First we create a new object with our filtered data:
gapminder_small_2 <- gapminder %>% filter(continent == "Americas", year %in% c(1952, 2007))
Then we plot that data using the
geom_col()
geom function. We color bars using thefill
parameter within theaes()
function. Since there are multiple bars for each country, we use theposition
parameter to “dodge” them so they appear side-by-side. The default behavior forpostion
ingeom_col()
is “stack”.ggplot(gapminder_small_2, aes(x = country, y = gdpPercap, fill = as.factor(year))) + geom_col(position = "dodge") + coord_flip()
The examples given here are just the start of creating complex and beautiful graphics with R. In a later lesson we will go into much more depth, including:
- plotting geospatial specific data types
- adjusting the color scheme of our plots
- setting and formatting plot titles, subtitles, and axis labels
- creating multi-panel plots
- creating point (scatter) and line plots
- layering datasets to create multi-layered plots
- creating and customizing a plot legend
- and much more!
The examples we’ve worked through in this episode should give you the building blocks for working with the more complex graphic types and customizations we will be working with in that lesson.
Ключові моменти
Use
ggplot2
to create plots.Think about graphics in layers: aesthetics, geometry, etc.