본문 바로가기
  • "You can't manage what you can't measure" Peter Drucker
데이터 분석 (with Rstudio)

[Rstudio] Line plot 선 그래프 with ggplot

by Vitaminymc 2023. 10. 18.
반응형

선 그래프 (Line Chart)

선 그래프(Line Chart)는 시계열 데이터나 연속 데이터의 변화를 그래프로 나타낸 것이다.

데이터의 위치 점들을 선으로 연결하여 데이터의 추세나 패턴을 보여준다. 

선 그래프는 주로 연속 데이터를 시각화하는 데 사용되며, 시간, 온도, 주가, 판매량 등과 같은 연속적으로 변화하는 데이터를 시각화하여, 데이터의 변화나 경향을 파악하는 데 유용하다.

 

R 기본함수 : plot 함수 사용

사용 데이터 : 서울시 일 기온 (평균기온, 최저기온, 최고기온)

Data source : https://data.kma.go.kr/ 

 

기상자료개방포털

 

data.kma.go.kr

기간 :  2022년 1월 1일 ~ 2023년 10월 14일

관측 지역 :  서울(108)

Image source :  https://data.kma.go.kr/
ta_20231015210826.xls
0.02MB

library(readxl)

seoul_temper <- read_excel("ta_20231015210826.xlsx")

summary(seoul_temper)
m_date m_spot avg_temper low_temper high_temper
Min.   : 2022-01-01 0:00:00 Min.   : 108 Min.   : -14.7 Min.   : -17.3 Min.   : -8.6
1st Qu.: 2022-06-12 18:00:00 1st Qu.: 108 1st Qu.: 5.975 1st Qu.: 1.25 1st Qu.: 10.78
Median : 2022-11-22 12:00:00 Median : 108 Median : 17.05 Median : 11.9 Median : 22.15
Mean   : 2022-11-22 12:00:00 Mean   : 108 Mean   : 14.588 Mean   : 10.51 Mean   : 19.34
3rd Qu.: 2023-05-04 6:00:00 3rd Qu.: 108 3rd Qu.: 23.9 3rd Qu.: 20.3 3rd Qu.: 27.82
Max.   : 2023-10-14 0:00:00 Max.   : 108 Max.   : 30.9 Max.   : 27.4 Max.   : 36.1
              NA's   : 1    
# 그래프 옵션 설정
plot(seoul_temper$m_date, seoul_temper$avg_temper, type = "l", col = "blue", 
	xlab = "Date", ylab = "Temperature",
   	main = "Seoul Temperature Trends",  ylim = c(-10, 40))  # ylim으로 y축 범위 설정
lines(seoul_temper$m_date, seoul_temper$high_temper, col = "red")
lines(seoul_temper$m_date, seoul_temper$low_temper, col = "green")

plot 함수를 사용하여 평균 온도를 나타내는 선 그래프를 표시

type = "l"은 선 그래프로 설정하고, col로 선 색상을 지정

xlab과 ylab는 각각 x 축과 y 축 레이블을 설정하며, main은 그래프의 제목을 설정

ylim 매개변수를 사용하여 y축 범위를 지정
lines 함수를 사용하여 최고 온도와 최저 온도를 나타내는 선 그래프를 추가

plot (type = "l")

# 범례 추가
legend(x = "topright", y = max(seoul_temper_subset$avg_temper), 
	legend = c("Average", "High", "Low"), col = c("blue", "red", "green"), lty = 1)

plot (type = "l")

plot (line plot) 옵션

[Rstudio] 데이터 유형별 그래프 선택 기준 및 R 그래프 함수 (tistory.com)

 

[Rstudio] 데이터 유형별 그래프 선택 기준 및 R 그래프 함수

데이터 유형과 그래프 (chart, plot) 선택 기준 어떤 유형의 데이터를 표현할 때, 어떤 그래프별가 적합할까에 대한 일반적인 기준은 아래와 같다. 산점도(Scatter plot) : 연속형 변수의 상관관계의 시

logistician.tistory.com


 

300x250

ggplot + geom_line

geom_line #1

변수별로 geom_line으로 추가

ggplot(seoul_temper, aes(x = m_date)) +
  geom_line(aes(y = avg_temper, col = "blue")) +
  geom_line(aes(y = high_temper, col = "red")) +
  geom_line(aes(y = low_temper, col = "green")) +
  labs(title = "Seoul Temperature Trends", x = "Date", y = "Temperature") +
  coord_cartesian(ylim = c(-10, 40))  # y축 범위 설정

geom_line

 

geom_line #2 : 색상 스케일 설정

scale_color_manual

ggplot(seoul_temper, aes(x = m_date)) +
  geom_line(aes(y = avg_temper, col = "Average")) +
  geom_line(aes(y = high_temper, col = "High")) +
  geom_line(aes(y = low_temper, col = "Low")) +
  scale_color_manual(values = c("Average" = "blue", "High" = "red", "Low" = "green")) +  # 색상 스케일 설정
  labs(title = "Seoul Temperature Trends", x = "Date", y = "Temperature") +
  coord_cartesian(ylim = c(-10, 40))

geom_line

 

geom_line #3 : geom_point 결합

서울시 2023년 6월~8월 평균 기온

seoul_temper_2023_678 <- seoul_temper %>%
  filter (m_date >= "2023-06-01" & m_date < "2023-09-01")

head(seoul_temper_2023_678)

tail(seoul_temper_2023_678)
> head(seoul_temper_2023_678)
# A tibble: 6 × 5
  m_date              m_spot avg_temper low_temper high_temper
  <dttm>               <dbl>      <dbl>      <dbl>       <dbl>
1 2023-06-01 00:00:00    108       22.8       19.7        26.3
2 2023-06-02 00:00:00    108       20.4       17.9        25  
3 2023-06-03 00:00:00    108       22         16.6        27.8
4 2023-06-04 00:00:00    108       22.1       16.9        28  
5 2023-06-05 00:00:00    108       21.5       17.6        26.3
6 2023-06-06 00:00:00    108       20.3       17.3        25.2

> tail(seoul_temper_2023_678)
# A tibble: 6 × 5
  m_date              m_spot avg_temper low_temper high_temper
  <dttm>               <dbl>      <dbl>      <dbl>       <dbl>
1 2023-08-26 00:00:00    108       26.4       23.3        30.3
2 2023-08-27 00:00:00    108       26.1       22.7        29.6
3 2023-08-28 00:00:00    108       22.7       20.8        25.6
4 2023-08-29 00:00:00    108       23.9       22.5        25.5
5 2023-08-30 00:00:00    108       22.8       21.5        24.5
6 2023-08-31 00:00:00    108       23.9       21          28.9
ggplot(seoul_temper_2023_678, aes(x = m_date, y = avg_temper)) +
  geom_line(col = "grey", linewidth = 2, linetype = "dashed") + geom_point(col = "red", size=3) +
  labs(title = "Seoul Temperature Trends (2023.6~8)", x = "Date", y = "Temperature")

geom_line과 geom_point를 결합하여 선 그래프와 점을 동시에 표시하여 데이터 분포와 추세를 함께 시각화

linewidth로 선의 두께를 설정하고, linetype으로 선의 스타일을 설정

선 스타일 옵션으로는 "solid" (실선), "dotted" (점선), "dotdash" (점-대쉬) 등이 있음


geom_line() + geom_line()  + geom_line() 

geom_line() + geom_point() 처럼

ggplot2를 사용하면 각각의 그래프를 레이어 형태로 추가할 수 있다.

 

728x90