Categories: R

R에서 기본 그래프 그리기 (plot(), barplot(), hist())

안녕하세요! 데이터 시각화, 어떻게 시작해야 할지 막막하셨죠? R을 이용하면 생각보다 훨씬 쉽고 재밌게 그래프를 그릴 수 있어요. 복잡한 코드나 어려운 용어 때문에 걱정하셨다면 이제 걱정 뚝! 그리기, 이젠 어렵지 않아요!

오늘 저와 함께 `plot()`, `barplot()`, `hist()` 함수를 활용하여 기본적인 그래프를 직접 만들어 볼 거예요. 막대 그래프부터 히스토그램까지, R에서 기본 그래프 그리는 방법을 차근차근 알려드릴게요. 다양한 그래프 옵션 설정하는 팁까지 준비했으니, 함께 시작해 볼까요?

 

 

plot() 함수 이해하기

R 언어에서 가장 기본적이고, 또 가장 많이 사용하는 그래프 함수, 바로 `plot()`이에요! 마치 연필을 쥐고 스케치북에 점을 찍듯, 데이터를 시각화하는 첫걸음이라고 할 수 있죠. `plot()` 함수는 기본적으로 x축과 y축에 해당하는 데이터를 받아 점이나 선으로 이어진 그래프를 그려준답니다. 정말 간단해 보이지만, 숨겨진 기능들이 어마어마하게 많아요~ 마치 마법상자 같달까요? ^^

plot() 함수의 기본 사용법

자, 그럼 이 마법상자, `plot()` 함수를 좀 더 자세히 들여다볼까요? 가장 기본적인 사용법은 `plot(x, y)` 형태예요. 여기서 x는 x축 데이터, y는 y축 데이터를 의미해요. 예를 들어, x <- c(1, 2, 3, 4, 5)y <- c(2, 4, 1, 5, 3)라는 두 벡터가 있다면, `plot(x, y)`를 실행하면 x 값과 y 값을 각각 좌표로 하는 다섯 개의 점이 찍힌 그래프가 나타난답니다! 참 쉽죠?

type 인수를 활용한 그래프 다양화

하지만, 단순히 점만 찍는 것으로는 데이터의 경향을 파악하기 어려울 수도 있어요. 그래서 `plot()` 함수는 `type`이라는 아주 유용한 인수를 제공한답니다. `type` 인수를 사용하면 점, 선, 계단식 등 다양한 형태로 그래프를 그릴 수 있어요. 예를 들어, `plot(x, y, type = “l”)` 이라고 입력하면 점 대신 x와 y 값을 이은 선 그래프가 그려진답니다. “l”은 line을 의미해요! 만약 점과 선을 모두 표시하고 싶다면? `type = “b”`를 사용하면 된답니다! “b”는 both를 의미하는 거, 이제 아시겠죠? (찡긋) 😉

plot() 함수의 다양한 인수

이 외에도 `plot()` 함수는 그래프의 제목, x축 레이블, y축 레이블, 색상, 점의 모양 등 다양한 요소들을 사용자가 직접 설정할 수 있도록 여러 가지 인수를 제공해요. 예를 들어, `main` 인수를 사용하면 그래프의 제목을 지정할 수 있고, `xlab``ylab` 인수를 사용하면 x축과 y축 레이블을 각각 설정할 수 있어요. `col` 인수를 이용하면 점이나 선의 색상을 바꿀 수 있고요, `pch` 인수를 사용하면 점의 모양을 원, 삼각형, 사각형 등 다양한 형태로 바꿀 수 있답니다. 정말 놀랍지 않나요?! 🤩

plot() 함수 활용 예시

자, 예시를 하나 들어볼게요. `plot(x, y, type = “b”, main = “나의 첫 번째 R 그래프”, xlab = “시간”, ylab = “온도”, col = “blue”, pch = 16)`와 같이 입력하면, 파란색 실선과 점으로 이루어진 “나의 첫 번째 R 그래프”라는 제목의 그래프가 그려진답니다. x축에는 “시간”, y축에는 “온도”라는 레이블이 표시되고, 데이터는 파란색 동그라미(pch = 16)로 표현되겠죠!

pch 값에 따른 점 모양

여기서 잠깐! 혹시 `pch` 값이 1부터 25까지 있다는 사실, 알고 계셨나요? 각 숫자마다 다른 모양의 점이 표현된답니다. 궁금하시다면 `example(points)`를 R 콘솔에 입력해보세요! 다양한 점 모양들을 확인할 수 있을 거예요.

함수 그래프 그리기

`plot()` 함수는 단순한 산점도뿐만 아니라, 함수 그래프를 그리는 데에도 사용할 수 있어요. 예를 들어, `curve(x^2, from = -5, to = 5)`를 실행하면 -5부터 5까지 x^2 함수의 그래프가 그려진답니다. 정말 다재다능한 함수죠?

plot() 함수의 무궁무진한 활용

이처럼 `plot()` 함수는 다양한 인수를 통해 그래프의 모양을 자유자재로 바꿀 수 있어요. 마치 화가가 붓과 물감을 사용하여 그림을 그리듯, `plot()` 함수를 이용하여 데이터를 원하는 방식으로 시각화할 수 있답니다. 처음에는 조금 복잡해 보일 수 있지만, 하나씩 익혀나가다 보면 어느새 R 그래프 마스터가 되어 있을 거예요! 😉 다음에는 `barplot()` 함수에 대해 알아볼 텐데, 기대되시죠? 😊

 

barplot() 으로 막대 그래프 만들기

드디어! R에서 기본 그래프 중 두 번째, `barplot()` 함수 차례네요! 짝짝짝! ^^ `plot()` 함수를 잘 따라오셨다면 `barplot()` 함수도 어렵지 않게 정복할 수 있을 거예요. 막대 그래프는 데이터의 범주별 값을 비교할 때 정말 유용하죠. 마치 건물들이 높이 경쟁하는 것처럼, 각 범주의 값이 막대의 높이로 표현되니까 한눈에 비교하기 쉽거든요. 자, 그럼 `barplot()` 함수의 세계로 풍덩~ 빠져볼까요?

`barplot()` 함수의 기본 사용법

`barplot()` 함수의 기본적인 사용법은 `barplot(height)`예요. 여기서 `height`는 각 막대의 높이를 나타내는 벡터 또는 행렬이죠. 예를 들어, 어느 아이스크림 가게의 월별 판매량을 막대 그래프로 나타내고 싶다고 해볼게요. 1월부터 12월까지 판매량이 각각 150, 180, 200, 250, 300, 350, 400, 380, 320, 250, 200, 170개라고 한다면, 이 값들을 벡터로 만들어 `barplot()` 함수에 넣어주면 돼요. 참 쉽죠?!

sales <- c(150, 180, 200, 250, 300, 350, 400, 380, 320, 250, 200, 170)
barplot(sales)

이렇게 간단한 코드로 멋진 막대 그래프가 짠! 하고 나타난답니다. 하지만, 이것만으로는 뭔가 좀 부족하죠? 어떤 달의 판매량인지 알 수 없으니까요! 그래서 `names.arg` 인수를 사용해서 x축에 각 막대의 이름을 붙여줄 수 있어요. 1월부터 12월까지의 이름을 가진 벡터를 만들어 `names.arg`에 넣어주면 된답니다.

months <- month.abb  # month.abb는 1월부터 12월까지의 약칭을 담고 있는 벡터예요!
barplot(sales, names.arg = months)

훨씬 보기 좋아졌죠? 이제 어떤 달에 아이스크림이 많이 팔렸는지 바로 알 수 있겠네요! 여름에 판매량이 확! 뛰는 게 눈에 쏙 들어오지 않나요? 하지만, 여기서 멈추지 않고 더 멋진 그래프를 만들어 볼 거예요! `col` 인수를 사용하면 막대의 색깔을 바꿀 수 있거든요. `border` 인수로는 막대 테두리 색을 지정할 수 있고요. `main` 인수로는 그래프 제목을, `xlab``ylab` 인수로는 x축과 y축의 이름을 붙여줄 수 있어요.

barplot(sales, names.arg = months, col = "skyblue", border = "pink", 
        main = "월별 아이스크림 판매량", xlab = "월", ylab = "판매량")

짜잔~!! 훨씬 예쁘고 정보가 풍부한 막대 그래프가 완성되었어요! 이렇게 `barplot()` 함수는 다양한 인수를 사용해서 그래프를 꾸밀 수 있답니다. 각 인수에 대해 더 자세히 알고 싶다면 `?barplot` 명령어를 사용해서 도움말을 확인해 보세요! 정말 많은 옵션들이 숨어있거든요~?

행렬 데이터 처리

`barplot()` 함수는 단순한 벡터뿐만 아니라 행렬 데이터도 처리할 수 있어요. 행렬을 사용하면 여러 개의 데이터 그룹을 비교하는 막대 그래프를 만들 수 있죠. 예를 들어, 위 아이스크림 가게에서 초코맛, 딸기맛, 바닐라맛 아이스크림의 월별 판매량을 비교하고 싶다고 해볼게요. 각 맛별 판매량을 행렬로 만들어 `barplot()` 함수에 넣어주면 된답니다. `beside = TRUE` 인수를 추가하면 그룹별 막대가 나란히 표시되고, `legend.text` 인수로 범례를 추가할 수 있어요. `args.legend` 인수를 사용하면 범례의 위치나 모양도 조절할 수 있고요!

sales_matrix <- matrix(c(100, 80, 70, 120, 100, 90, 150, 120, 110, 180, 150, 130,
                       50, 60, 70, 80, 90, 100, 110, 100, 90, 80, 70, 60,
                       100, 100, 100, 100, 110, 120, 130, 120, 110, 100, 90, 80), nrow = 3, byrow = TRUE)
colnames(sales_matrix) <- months
rownames(sales_matrix) <- c("초코", "딸기", "바닐라")

barplot(sales_matrix, beside = TRUE, col = c("brown", "pink", "lightyellow"),
        legend.text = rownames(sales_matrix), args.legend = list(x = "topright"))

이렇게 다양한 맛의 아이스크림 판매량을 한눈에 비교할 수 있는 멋진 막대 그래프가 완성되었네요! 어떤가요? `barplot()` 함수, 생각보다 어렵지 않죠? 이제 여러분도 `barplot()` 함수를 자유자재로 활용해서 데이터를 시각적으로 표현하고 분석할 수 있을 거예요! 다음에는 히스토그램을 그리는 `hist()` 함수에 대해 알아볼 거예요. 기대해 주세요~!

 

히스토그램 그리기: hist() 함수 활용

자, 이제 드디어 히스토그램 차례예요! 히스토그램은 데이터의 분포를 시각적으로 확인하는 데 정말 유용한 도구랍니다. 마치 데이터의 지형도를 그리는 것과 같다고 할까요? R에서는 `hist()` 함수를 이용해서 아주 간편하게 히스토그램을 만들 수 있어요. 어떻게 사용하는지, 숨겨진 기능은 무엇인지 자세히 알아볼까요?

`hist()` 함수의 기본 사용법

`hist()` 함수는 기본적으로 데이터 벡터 하나만 입력하면 멋진 히스토그램을 뚝딱! 만들어준답니다. 예를 들어, 1부터 100까지의 랜덤 숫자 50개를 가진 벡터 data가 있다고 해볼게요. hist(data)라고 입력하면 R이 알아서 데이터 범위를 적절한 구간(bin)으로 나누고, 각 구간에 해당하는 데이터의 개수를 막대로 표현해준답니다. 참 쉽죠? ^^

`hist()` 함수의 다양한 옵션

하지만, 기본 설정만으로는 내가 원하는 모양의 히스토그램을 얻기 어려울 수도 있어요. 그래서 hist() 함수는 다양한 옵션들을 제공한답니다! 마치 히스토그램을 섬세하게 조각하는 조각칼처럼 말이죠.

`breaks` 옵션: 구간 설정

먼저, breaks 옵션을 사용하면 데이터를 나눌 구간의 개수 또는 경계값을 직접 지정할 수 있어요. 예를 들어, hist(data, breaks = 10)이라고 입력하면 데이터를 10개의 구간으로 나누어 히스토그램을 그려준답니다. 만약 특정 경계값을 원한다면, breaks = c(0, 20, 40, 60, 80, 100) 처럼 벡터 형태로 값을 입력하면 돼요. 이렇게 하면 0~20, 20~40, …, 80~100과 같이 내가 원하는 구간으로 데이터를 나눌 수 있죠!

`freq` 옵션: 빈도 또는 확률 밀도

freq 옵션은 히스토그램의 y축을 빈도(frequency)로 표시할지, 아니면 확률 밀도(probability density)로 표시할지를 결정해요. 기본값은 TRUE로, 빈도를 나타내는 히스토그램이 그려진답니다. 만약 확률 밀도 히스토그램을 원한다면 freq = FALSE로 설정하면 돼요. 확률 밀도 히스토그램은 전체 면적의 합이 1이 되도록 그려진다는 특징이 있어요. 데이터 분포의 형태를 비교할 때 유용하게 쓰인답니다.

`main`, `xlab`, `ylab` 옵션: 제목 및 레이블 설정

main, xlab, ylab 옵션을 사용하면 히스토그램의 제목과 x축, y축 레이블을 각각 설정할 수 있어요. 예를 들어, hist(data, main = "데이터 분포", xlab = "값", ylab = "빈도") 와 같이 입력하면 훨씬 보기 좋고 이해하기 쉬운 히스토그램이 완성된답니다!

`col`, `border` 옵션: 색상 및 테두리 설정

col 옵션을 사용하면 히스토그램 막대의 색깔을 바꿀 수 있어요. “red”, “blue”, “green”과 같은 기본 색상뿐만 아니라, “#FF0000”, “#0000FF”, “#008000″와 같은 hex 코드를 사용해서 더욱 다양한 색상을 표현할 수도 있답니다. 히스토그램에 나만의 개성을 더하고 싶다면 꼭 활용해보세요~?!
border 옵션을 사용하면 막대의 테두리 색을 지정할 수 있어요. col 옵션과 함께 사용하면 더욱 멋진 히스토그램을 만들 수 있겠죠? 예를 들어, hist(data, col = "lightblue", border = "darkblue") 와 같이 입력하면 연한 파란색 막대에 진한 파란색 테두리가 있는 히스토그램을 그릴 수 있어요.

`xlim`, `ylim` 옵션: 축 범위 설정

xlim, ylim 옵션을 이용하면 x축과 y축의 범위를 직접 지정할 수 있어요. 예를 들어, x축 범위를 0부터 100까지로 제한하고 싶다면 xlim = c(0, 100)으로 설정하면 된답니다. 특정 영역을 확대해서 보고 싶을 때 유용하게 활용할 수 있겠죠?

`density`, `angle` 옵션: 패턴 추가

density, angle 옵션을 사용하면 막대에 패턴을 추가할 수 있어요. density는 패턴의 밀도를, angle은 패턴의 각도를 조절한답니다. 다양한 값을 조합해서 나만의 독특한 히스토그램을 만들어 보세요! 예를 들어, hist(data, density = 10, angle = 45) 와 같이 입력하면 45도 각도로 기울어진 패턴이 있는 막대가 그려진답니다.

`add = TRUE` 옵션: 그래프 덧그리기

마지막으로 add = TRUE 옵션을 사용하면 기존에 그려진 그래프 위에 히스토그램을 덧그릴 수 있어요. 여러 데이터의 분포를 한눈에 비교하고 싶을 때 아주 유용하답니다!

자, 이렇게 hist() 함수의 다양한 옵션들을 살펴보았어요. 처음에는 조금 복잡해 보일 수 있지만, 하나씩 사용해 보면 금방 익숙해질 거예요. 이제 여러분은 R을 이용해서 원하는 모양의 히스토그램을 자유자재로 그릴 수 있게 되었어요! 데이터 분석의 첫걸음을 성공적으로 내딛은 여러분을 진심으로 축하합니다~! 다음에는 더욱 흥미로운 그래프 기법들을 함께 탐험해 보아요!

 

다양한 그래프 옵션 설정하기

자, 이제 R에서 기본적인 그래프는 그릴 수 있게 되었으니, 좀 더 예쁘고 보기 좋게, 그리고 정보까지 풍부하게 담아내는 마법을 부려볼까요? R의 plot(), barplot(), hist() 함수는 기본적인 형태만 제공하는 것이 아닙니다! 각종 옵션들을 활용하면 전문가 수준의 시각화 결과물을 만들어낼 수 있어요. 마치 요리에 향신료를 톡톡 뿌려 맛을 더 풍부하게 해주는 것처럼 말이죠~?

plot() 함수

먼저 plot() 함수부터 살펴보겠습니다. plot() 함수에서는 type 인자를 통해 그래프의 종류를 지정할 수 있다는 사실, 알고 계셨나요? 기본값은 점으로 데이터를 표시하는 “p”지만, “l”을 사용하면 선 그래프, “b”는 점과 선을 함께 표시하는 그래프, “o”는 점 위에 선을 겹쳐 그리는 그래프, “h”는 히스토그램 형태의 그래프, “s”는 계단식 그래프, “n”은 데이터를 표시하지 않고 축만 그리는 옵션까지… 정말 다양하죠?! 예를 들어, 시간에 따른 주가 변동을 보여주고 싶다면 type = "l"을 사용하여 부드러운 곡선으로 표현할 수 있답니다.

색상도 자유자재로 바꿀 수 있어요! col 인자를 이용하면 되는데요. “red”, “blue”와 같은 기본 색상 이름은 물론이고, “#FF0000″처럼 Hex 코드를 사용하여 더욱 세밀한 색상 조정도 가능해요. 데이터가 여러 개일 경우 각각 다른 색상을 지정해서 구분하기 쉽게 만들 수도 있겠죠? 예를 들어, 세 개의 데이터 그룹을 각각 빨강, 파랑, 초록으로 표현하고 싶다면 col = c("red", "blue", "green") 이렇게 입력하면 된답니다. 참 쉽죠?!

pch 인자는 점의 모양을 바꿔주는 역할을 해요. 기본값인 빈 동그라미 외에도 채워진 동그라미, 네모, 세모, 별 등 총 25개의 다양한 모양이 준비되어 있답니다! 데이터의 특성에 맞춰 직관적인 모양을 선택하면 그래프를 더욱 효과적으로 전달할 수 있겠죠? 예를 들어, 남녀 데이터를 구분하고 싶다면 남자는 pch = 1(빈 동그라미), 여자는 pch = 16(채워진 동그라미)으로 설정하면 한눈에 구분이 가능해요!

barplot() 함수

자, 이번에는 barplot() 함수를 꾸며볼까요? barplot() 함수에서도 col 인자를 사용하여 막대의 색상을 변경할 수 있어요. 단색으로 깔끔하게 표현할 수도 있고, 각 막대마다 다른 색상을 입혀서 다채롭게 표현할 수도 있답니다. border 인자를 사용하면 막대 테두리의 색상까지 지정할 수 있다는 사실! 테두리 색상을 막대 색상과 다르게 설정하면 막대가 더욱 선명하게 눈에 띄겠죠?

horiz = TRUE 옵션을 사용하면 가로 막대 그래프를 그릴 수 있어요. 데이터 값이 크거나 항목 이름이 길 경우 가로 막대 그래프가 더욱 효과적일 수 있답니다. 그리고 densityangle 인자를 사용하면 막대 내부에 사선 무늬를 추가할 수도 있어요! 뭔가 더 전문적인 느낌이 나지 않나요? ^^

hist() 함수

마지막으로 hist() 함수! 히스토그램에서도 col 인자는 막대 색상을 변경하는 데 사용됩니다. breaks 인자를 사용하면 계급 구간의 개수 또는 경계값을 직접 지정할 수 있어요. 데이터 분포에 따라 적절한 계급 구간을 설정하면 데이터의 특징을 더욱 명확하게 파악할 수 있답니다. probability = TRUE 옵션을 사용하면 y축을 빈도 대신 확률 밀도로 표시할 수도 있어요. 통계적인 분석을 할 때 유용하게 활용할 수 있는 옵션이죠!

그래프 옵션 추가 설정

xlimylim 인자는 각각 x축과 y축의 범위를 지정하는 데 사용됩니다. 데이터의 특정 부분을 확대해서 보여주고 싶을 때 유용하게 사용할 수 있어요. 예를 들어, 0부터 100까지의 데이터 중 50부터 70까지의 구간을 집중적으로 분석하고 싶다면 xlim = c(50, 70)으로 설정하면 된답니다.

main, xlab, ylab 인자를 사용하면 각각 그래프 제목, x축 레이블, y축 레이블을 설정할 수 있어요. 레이블을 명확하게 설정하면 그래프가 무엇을 나타내는지 쉽게 이해할 수 있겠죠? cex.main, cex.lab, cex.axis 인자는 각각 제목, 레이블, 축 눈금의 크기를 조절하는 데 사용됩니다. 그래프의 크기에 맞춰 적절한 크기로 조정하면 가독성을 높일 수 있어요.

이 외에도 정말 다양한 옵션들이 존재한답니다! lty로 선의 종류를 변경하고, lwd로 선의 굵기를 조절하고, font로 폰트를 변경하고… 마치 화가가 캔버스에 그림을 그리듯이, R의 그래프 옵션들을 활용하여 데이터를 시각적으로 표현해 보세요! R 그래프의 세계는 무궁무진하답니다! 다음에는 ggplot2 패키지를 이용한 고급 그래프 그리기에 대해 알아볼게요! 기대해주세요~

 

R 기본 그래프 함수들, 어떠셨나요? plot, barplot, hist! 이 친구들만 잘 알아둬도 데이터 시각화의 반은 먹고 들어간다고 해도 과언이 아니에요. 처음엔 어려워 보여도 몇 번 연습하다 보면 금방 손에 익을 거예요. 마치 새로운 악기를 배우는 것처럼요! 다양한 옵션들을 활용해서 나만의 멋진 그래프를 만들어 보는 재미도 쏠쏠하답니다. 데이터 분석의 꽃, 시각화! R과 함께라면 더욱 즐거운 여정이 될 거예요. 이제 여러분의 데이터에 숨겨진 이야기를 멋진 그래프로 펼쳐보세요! 화이팅!

 

Itlearner

Share
Published by
Itlearner

Recent Posts

R에서 데이터 분포 시각화 (히스토그램, 박스플롯)

안녕하세요! 데이터 분석, 어렵게만 느껴지셨죠? 특히 데이터의 분포를 한눈에 파악하는 건 쉽지 않아요. 그런데 걱정…

42분 ago

R에서 ggplot2 패키지 활용 (ggplot(), aes(), geom_bar(), geom_line())

안녕하세요! 데이터 시각화, 어렵게만 느껴지셨나요? 혹시 R을 사용하고 계신다면, 걱정 마세요! R의 강력한 시각화 도구,…

6시간 ago

R에서 날짜 및 시간 데이터 처리 (as.Date(), lubridate 패키지 활용)

안녕하세요! 데이터 분석하면서 골치 아픈 날짜, 시간 데이터 때문에 머리 싸매고 계신가요? 저도 그랬어요. 그래서…

16시간 ago

R에서 문자열 다루기 (paste(), substr(), stringr 패키지 활용)

안녕하세요! 데이터 분석하면서 은근히 까다로운 문자열 처리 때문에 골치 아팠던 적, 다들 있으시죠? 저도 그랬어요!…

21시간 ago

R에서 데이터 병합과 조인 (merge(), inner_join(), left_join())

안녕하세요, 여러분! 데이터 분석하면서 골치 아픈 순간들이 있죠? 그중 하나가 바로 여러 데이터들을 하나로 합쳐야…

1일 ago

R에서 데이터 변환 (mutate(), transmute())

안녕하세요! 데이터 분석, 하고 싶지만 어려워서 망설이고 계셨나요? 괜찮아요! 제가 도와드릴게요. 오늘 우리가 함께 살펴볼…

1일 ago