R의 막대 차트 및 히스토그램(예제 포함)

막대 차트는 X축에 범주형 변수를 표시하는 좋은 방법입니다. 이 유형의 그래프는 y축의 두 가지 측면을 나타냅니다.

  1. 첫 번째는 그룹 간 발생 횟수를 계산합니다.
  2. 두 번째는 y축에 변수의 요약 통계(최소, 최대, 평균 등)를 표시합니다.

다음과 같은 변수를 갖는 mtcars 데이터 세트를 사용합니다.

  • cyl: 자동차의 실린더 번호입니다. 숫자변수
  • am: 변속기 유형. 자동은 0, 수동은 1입니다. 숫자 변수
  • mpg: 갤런당 마일. 숫자변수

막대 차트를 만드는 방법

그래프를 생성하려면 R, 게시 준비가 완료된 그래프를 생성하는 라이브러리 ggplot을 사용할 수 있습니다. 이 라이브러리의 기본 구문은 다음과 같습니다.

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 objects are:

- Point: `geom_point()`
- Bar: `geom_bar()`
- Line: `geom_line()`
- Histogram: `geom_histogram()` 

이 튜토리얼에서는 막대 차트를 생성하는 기하학적 개체 geom_bar()에 관심이 있습니다.

막대 차트: 개수

첫 번째 그래프는 geom_bar()를 사용하여 원통의 빈도를 보여줍니다. 아래 코드는 가장 기본적인 구문입니다.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

코드 설명

  • mtcars 데이터 세트를 ggplot에 전달합니다.
  • aes() 인수 내부에 x축을 요인 변수(cyl)로 추가합니다.
  • + 기호는 R이 코드를 계속 읽기를 원한다는 것을 의미합니다. 코드를 쪼개서 더 읽기 쉽게 만듭니다.
  • 기하학적 객체에는 geom_bar()를 사용합니다.

출력:

막대 차트: 개수

주의 사항: 변수를 요인으로 변환해야 합니다. 그렇지 않으면 R에서 변수를 숫자로 처리합니다. 아래 예를 참조하세요.

막대 차트: 개수

그래프 사용자 정의

그래프를 사용자 정의하기 위해 XNUMX개의 인수를 전달할 수 있습니다.

- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar	

막대 색상 변경

막대의 색상을 변경할 수 있습니다. 막대의 색상은 모두 유사합니다.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

코드 설명

  • 막대의 색상은 기하학적 객체 내부의 aes() 매핑에 의해 제어됩니다(즉, ggplot()가 아님). 채우기 인수를 사용하여 색상을 변경할 수 있습니다. 여기서는 코랄 컬러를 선택해 주세요.

출력:

막대 색상 변경

이 코드를 사용할 수 있습니다.

grDevices::colors()

R에서 사용할 수 있는 모든 색상을 보려면 약 650가지 색상이 있습니다.

강도 변경

막대 색상의 강도를 높이거나 낮출 수 있습니다.

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

코드 설명

  • 막대의 강도를 높이거나 낮추려면 알파 값을 변경할 수 있습니다. 알파가 크면 강도가 증가하고 알파가 낮으면 강도가 감소합니다. 알파의 범위는 0에서 1까지입니다. 1이면 색상이 팔레트와 동일합니다. 0이면 색상은 흰색입니다. 알파 = 0.1을 선택합니다.

출력:

강도 변경

그룹별 색상

막대의 색상을 변경할 수 있습니다. 즉, 각 그룹마다 서로 다른 색상이 적용됩니다. 예를 들어 cyl 변수에는 세 가지 수준이 있으므로 세 가지 색상으로 막대 차트를 그릴 수 있습니다.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

코드 설명

  • aes() 내부의 fill 인수를 사용하면 막대의 색상을 변경할 수 있습니다. fill = x축 변수를 설정하여 색상을 변경합니다. 귀하의 예에서 x축 변수는 cyl입니다. 채우기 = 인자(cyl)

출력:

그룹별 색상

막대에 그룹 추가

다른 요인 수준에 따라 y축을 더 분할할 수 있습니다. 예를 들어, 실린더 유형에 따라 자동 및 수동 변속기의 수를 셀 수 있습니다.

다음과 같이 진행하게 됩니다:

  • 1단계: mtcars 데이터세트로 데이터 프레임 만들기
  • 2단계: 자동 변속기의 경우 am 변수에 auto, 수동 변속기의 경우 man으로 레이블을 지정합니다. ggplot() 함수에서 factor()를 사용할 필요가 없도록 am과 cyl을 인수로 변환합니다.
  • 3단계: 실린더별 전송 횟수를 계산하기 위해 막대형 차트를 그립니다.
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

데이터 세트가 준비되었으므로 그래프를 그릴 수 있습니다.

# 3 단계

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

코드 설명

  • ggpplot()에는 데이터 세트 데이터와 aes()가 포함되어 있습니다.
  • aes()에는 x축 변수와 막대를 채우는 데 필요한 변수(예: am)가 포함됩니다.
  • geom_bar(): 막대 차트 생성

출력:

막대에 그룹 추가

매핑은 막대를 각 수준마다 하나씩 두 가지 색상으로 채웁니다. 데이터 세트에서 다른 요인 변수를 선택하여 그룹을 변경하는 것은 쉽습니다.

백분율로 표시되는 막대 차트

원시 개수 대신 백분율로 막대를 시각화할 수 있습니다.

# 백분율로 나타낸 막대 차트

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

코드 설명

  • geom_bar() 인수에 position = "fill"을 사용하여 y축에 백분율이 있는 그래픽을 만듭니다.

출력:

백분율 막대 차트

나란히 바

그룹변수와 함께 막대그래프를 나란히 그리는 것은 쉽습니다.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

코드 설명

  • position=position_dodge(): 막대 정렬 방법을 명시적으로 알려줍니다.

출력:

나란히 바

히스토그램

막대 차트 튜토리얼의 두 번째 부분에서는 y축의 값으로 변수 그룹을 나타낼 수 있습니다.

귀하의 목표는 각 실린더 유형의 갤런당 평균 마일을 사용하여 그래프를 만드는 것입니다. 유익한 그래프를 그리려면 다음 단계를 따르세요.

  • 1단계: 실린더별 갤런당 평균 마일을 사용하여 새 변수 만들기
  • 2단계: 기본 히스토그램 만들기
  • 3단계: 방향 변경
  • 4단계: 색상 변경
  • 5단계: 크기 변경
  • 6단계: 그래프에 라벨 추가

단계 1) 새 변수 만들기

간단히 자동차의 실린더 수로 갤런당 평균 마일을 반환하는 data_histogram이라는 데이터 프레임을 만듭니다. 이 새 변수를 평균_mpg라고 부르고 평균을 소수점 이하 두 자리로 반올림합니다.

# 1 단계

data_histogram <- mtcars % > %
mutate(cyl = factor(cyl)) % > %
group_by(cyl) % > %
summarize(mean_mpg = round(mean(mpg), 2))

단계 2) 기본 히스토그램 만들기

히스토그램을 그릴 수 있습니다. 고객에게 전달할 준비가 되어 있지는 않지만 추세에 대한 직관을 제공합니다.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

코드 설명

  • aes()에는 이제 두 개의 변수가 있습니다. cyl 변수는 x축을 나타내고, 평균_mpg는 y축을 나타냅니다.
  • y축의 변수를 숫자 값으로 참조하려면 stat=”identity” 인수를 전달해야 합니다. geom_bar는 stat=”bin”을 기본값으로 사용합니다.

출력:

히스토그램

단계 3) 방향 변경

그래프의 방향을 세로에서 가로로 변경합니다.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

코드 설명

  • coord_flip()을 사용하여 그래프의 방향을 제어할 수 있습니다.

출력:

히스토그램

단계 4) 색상 변경

x축 변수의 요인 수준에 따라 막대의 색상을 구분할 수 있습니다.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

코드 설명

  • fill= cyl 매핑을 사용하여 그룹별로 그래프를 그릴 수 있습니다. R은 cyl 변수의 수준에 따라 색상을 자동으로 처리합니다.

출력:

히스토그램

단계 5) 크기 변경

그래프를 더 보기 좋게 만들려면 막대의 너비를 줄이세요.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

코드 설명

  • geom_bar() 내부의 너비 인수는 막대의 크기를 제어합니다. 값이 클수록 너비가 늘어납니다.
  • 그래프를 변수 그래프에 저장합니다. 다음 단계에서는 변수 그래프의 코드가 변경되지 않기 때문에 그렇게 합니다. 코드의 가독성이 향상됩니다.

출력:

히스토그램

단계 6) 그래프에 라벨 추가

마지막 단계는 레이블에 변수mean_mpg의 값을 추가하는 것으로 구성됩니다.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

코드 설명

  • geom_text() 함수는 텍스트의 미학을 제어하는 ​​데 유용합니다.
    • label=: 막대 내부에 레이블을 추가합니다.
    • 평균_mpg: 라벨에 변수 평균_mpg를 사용합니다.
  • hjust는 레이블의 위치를 ​​제어합니다. 1에 가까운 값은 막대 상단에 레이블을 표시하고, 값이 높을수록 레이블은 하단에 표시됩니다. 그래프 방향이 수직인 경우 hjust를 vjust로 변경합니다.
  • color=”white”: 텍스트 색상을 변경합니다. 여기서는 흰색을 사용합니다.
  • size=3: 텍스트의 크기를 설정합니다.

출력:

히스토그램

요약

막대 차트는 x축이 범주형 변수일 때 유용합니다. y축은 카운트 또는 요약 통계일 수 있습니다. 아래 표는 ggplot2로 막대 차트를 제어하는 ​​방법을 요약한 것입니다.

목표 암호
카운트
ggplot(df, eas(x= factor(x1)) + geom_bar()
다양한 채우기 색상으로 계산
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
그룹으로 계산, 누적
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
그룹별로 나란히 계산
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
그룹으로 계산, % 단위로 누적됨
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
마케팅은:
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")