library(ggplot2)

library(choroplethr)

data(df_state_demographics)

names(df_state_demographics)

outputs

[1] "region" "total_population" "percent_white" "percent_black"

[5] "percent_asian" "percent_hispanic" "per_capita_income" "median_rent"

[9] "median_age"

Suppose we want to see the relationship between per capita income and median rent in each state. A simple way of doing this would be

ggplot(df_state_demographics, aes(x=per_capita_income, y=median_rent))

+ geom_point(shape=1)

The first argument tells us the dataset we want to use. We can then specify the x and y variables within aes. Think of aes as creating an "aesthetic", or something which allows you to specify which variables go where.

At a bare minimum, ggplot requires us to specify what shape we want the plots to take. These must be added on as a separate layer. Hence the command "+ geom_point(shape=1)". The output follows:

If we want a linear regression line, we can tack on another layer:

ggplot(df_state_demographics, aes(x=per_capita_income, y=median_rent))

+ geom_point(shape=1)

+ geom_smooth(method=lm)

which gives us

What if we don't want confidence intervals? Then we can try

ggplot(df_state_demographics, aes(x=per_capita_income, y=median_rent))

+ geom_point(shape=1)

+ geom_smooth(method=lm, se=FALSE)

Finally, what if we want to do LOESS? Just omit the arguments within geom_smooth.

ggplot(df_state_demographics, aes(x=per_capita_income, y=median_rent))

+ geom_point(shape=1)

+ geom_smooth()

Of course, we would want to make things fancier. For example, we might want to add a title. To make things simple, let's save our base plot as base_plot:

base_plot <- ggplot(df_state_demographics, aes(x=per_capita_income, y=median_rent))

+ geom_point(shape=1)

+ geom_smooth()

How can we:

1. Add a title?

base_plot + ggtitle("State per capita income and median rent")

2. Add labels?

base_plot + xlab("Per capita income ($)") + ylab("Median rent ($)")

Of course, this is just the tip of the iceberg. You may wish to see this excellent tutorial (part of this blogpost was drawn from there).

## No comments:

## Post a Comment