๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„ ๋งŒ๋“ค๊ธฐ (MpAndroidChart)

by 5566 2023. 10. 19.

1. ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ์‹œ๊ฐ„, ์—ฐ๋ น, ์ˆ˜๋Ÿ‰ ๋“ฑ์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์ถ”์„ธ, ํŒจํ„ด, ์ƒ๊ด€ ๊ด€๊ณ„ ๋“ฑ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ , ์ ๋“ค์„ ์„ ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์—ด๋˜๋Š” ๊ฒฝ์šฐ์— ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์‹ ๊ฐ€๊ฒฉ ๋ณ€๋™, ๋‚ ์”จ ๋ณ€ํ™”, ํŒ๋งค๋Ÿ‰ ์ถ”์ด ๋“ฑ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์˜ ์ƒํ•˜๋กœ ์ˆ˜์ง ๋ถ„ํฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„์™€๋„ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ๋ณด๋‹ค ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์ถ”์„ธ ๋ถ„์„์ด๋‚˜ ๋น„๊ต ๋ถ„์„์— ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ, MpAndroidChart ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

2. MpAndroidChart ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ๊ฐœ

MpAndroidChart๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๊ทธ๋ž˜ํ”„์™€ ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐ„ํŽธํ•œ ์‚ฌ์šฉ๋ฒ•๊ณผ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

๋‹ค์Œ์€ MpAndroidChart์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค:

  • ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”„ ์œ ํ˜•: MpAndroidChart๋Š” ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„, ์›ํ˜• ๊ทธ๋ž˜ํ”„, ๋ ˆ์ด๋” ์ฐจํŠธ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”„ ์œ ํ˜•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์— ๋งž๊ฒŒ ๊ทธ๋ž˜ํ”„๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒํ˜ธ์ž‘์šฉ ๊ธฐ๋Šฅ: MpAndroidChart๋Š” ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ํ™•๋Œ€/์ถ•์†Œํ•˜๊ฑฐ๋‚˜ ์Šคํฌ๋กคํ•˜์—ฌ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ„ฐ์น˜ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅ: MpAndroidChart๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์ƒ, ํฌ๊ธฐ, ์ถ•์˜ ํ˜•์‹ ๋“ฑ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ทธ๋ž˜ํ”„์— ์ฃผ์„์ด๋‚˜ ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์„ธํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ”Œ๋กฏ ์• ๋‹ˆ๋ฉ”์ด์…˜: MpAndroidChart๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ๊ณผ์ •์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MpAndroidChart๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ, GitHub์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ, ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

3. ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ค€๋น„ํ•˜๊ธฐ

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ์‹œ๊ฐ„, ์—ฐ๋ น, ์ˆ˜๋Ÿ‰ ๋“ฑ๊ณผ ๊ฐ™์ด ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ค€๋น„์˜ ๊ณผ์ •์ž…๋‹ˆ๋‹ค:

  1. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘: ์šฐ์„  ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์‹ ๊ฐ€๊ฒฉ ๋ณ€๋™์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฃผ๋ณ„๋กœ ๊ฐ€๊ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ฃผ์‹ ์‹œ์žฅ์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๋ฐ์ดํ„ฐ ์ •๋ฆฌ: ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜์—ฌ ๊ทธ๋ž˜ํ”„์— ์‚ฌ์šฉํ•  ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ์‹œ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด๋‚˜ ๊ฒฐ์ธก์น˜๊ฐ€ ์—†๋„๋ก ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ฐ์ดํ„ฐ ํฌ๋งท: MpAndroidChart๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ํ˜•์‹์œผ๋กœ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ Entry ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. Entry ๊ฐ์ฒด๋Š” x๊ฐ’๊ณผ y๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ๋กœ๋ฅผ ๊ทธ๋ฆด ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ Entry ๊ฐ์ฒด์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ทธ๋ž˜ํ”„ ํƒ€์ž… ์„ ํƒ: MpAndroidChart๋Š” ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”„ ํƒ€์ž…์„ ์ง€์›ํ•˜๋ฏ€๋กœ, ์–ด๋–ค ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด์ง€ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” LineDataSet ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , Entry ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MpAndroidChart ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ์„ ์‰ฝ๊ฒŒ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ฐ์ดํ„ฐ ์ค€๋น„์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ, MpAndroidChart๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

4. MpAndroidChart๋ฅผ ์ด์šฉํ•œ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ํ•˜๊ธฐ

MpAndroidChart๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. Gradle ํŒŒ์ผ์— ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ: ํ”„๋กœ์ ํŠธ์˜ Gradle ํŒŒ์ผ์— ๋‹ค์Œ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
  1. XML ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์—์„œ ChartView ์ถ”๊ฐ€ํ•˜๊ธฐ: ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ChartView๋ฅผ XML ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
<com.github.mikephil.charting.charts.LineChart
    android:id="@+id/chartView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  1. ChartView ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ ์„ค์ •ํ•˜๊ธฐ: ์•กํ‹ฐ๋น„ํ‹ฐ๋‚˜ ํ”„๋ž˜๊ทธ๋จผํŠธ์—์„œ ChartView๋ฅผ ์ฐธ์กฐํ•˜๊ณ , ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
LineChart chartView = findViewById(R.id.chartView);

List<Entry> entries = new ArrayList<>();
entries.add(new Entry(0, 4));
entries.add(new Entry(1, 8));
entries.add(new Entry(2, 6));
entries.add(new Entry(3, 2));
entries.add(new Entry(4, 7));

LineDataSet lineDataSet = new LineDataSet(entries, "Data");
lineDataSet.setColor(Color.BLUE);
lineDataSet.setLineWidth(2f);
lineDataSet.setCircleColor(Color.RED);
lineDataSet.setCircleRadius(4f);

LineData lineData = new LineData(lineDataSet);
chartView.setData(lineData);
chartView.invalidate();
  1. ์ถ”๊ฐ€ ์„ค์ • ๋ฐ ์ƒํ˜ธ์ž‘์šฉ ๊ธฐ๋Šฅ ํ™œ์šฉํ•˜๊ธฐ: MpAndroidChart๋Š” ๋งŽ์€ ์ถ”๊ฐ€ ์„ค์ •๊ณผ ์ƒํ˜ธ์ž‘์šฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ทธ๋ž˜ํ”„ ์ถ• ์กฐ์ •, ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ, ํ„ฐ์น˜ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์‘๋‹ต ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
// ์ถ• ์„ค์ •ํ•˜๊ธฐ
chartView.getAxisLeft().setAxisMinimum(0f);
chartView.getAxisRight().setEnabled(false);

// ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ์ถ”๊ฐ€ํ•˜๊ธฐ
chartView.animateX(1000);

// ๊ทธ๋ž˜ํ”„ ์ƒํ˜ธ์ž‘์šฉ ๊ธฐ๋Šฅ ์„ค์ •ํ•˜๊ธฐ
chartView.setTouchEnabled(true);
chartView.setDragEnabled(true);
chartView.setScaleEnabled(true);
chartView.setPinchZoom(true);

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์›ํ•˜๋Š” ์Šคํƒ€์ผ๊ณผ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•˜์—ฌ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MpAndroidChart๋Š” ๋‹ค์–‘ํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๊ณผ ์‚ฌ์šฉ์ž ์ •์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ์ž์„ธํ•œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๊ณต์‹ ๋ฌธ์„œ๋‚˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„์˜ ํ™œ์šฉ๊ณผ ์žฅ์ 

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ทธ ์ค‘์š”์„ฑ๊ณผ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

5.1 ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐ„์  ๋ณ€ํ™” ํ‘œํ˜„

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ, ์ฃผ์‹ ๊ฐ€๊ฒฉ, ๊ธฐํ›„ ๋ณ€ํ™”, ์ธ๊ตฌ ํ†ต๊ณ„์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ถ”์ด์™€ ํŒจํ„ด์„ ํŒŒ์•…ํ•˜๊ธฐ ์šฉ์ดํ•˜๋ฉฐ, ๊ฒฝํ–ฅ์„ฑ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.2 ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ ๋น„๊ต ๋ฐ ๋ถ„์„

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊บฝ์€์„ ์„ ๊ฒน์ณ์„œ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ์˜ ๋น„๊ต๋‚˜ ์—ฐ๊ด€์„ฑ ๋ถ„์„์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ง€์—ญ์˜ ์˜จ๋„๋ณ€ํ™”๋ฅผ ๋น„๊ตํ•˜๊ฑฐ๋‚˜ ๊ฐ๊ฐ์˜ ๊บฝ์€์„ ์„ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฃผ์‹ ๊ฐ€๊ฒฉ์„ ๋™์‹œ์— ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.3 ์˜ˆ์ธก๊ณผ ์ถ”์„ธ ๋ถ„์„

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ์˜ˆ์ธก๊ณผ ์ถ”์„ธ ๋ถ„์„์—๋„ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”์„ธ์„  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฏธ๋ž˜ ๋ฐ์ดํ„ฐ์˜ ์ถ”์„ธ๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ํˆดํŒ์ด๋‚˜ ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŠน์ • ์‹œ์ ์˜ ๊ฐ’์„ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.4 ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ

MpAndroidChart๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ํ™•๋Œ€/์ถ•์†Œํ•˜์—ฌ ์„ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ๊ทธ๋ž˜ํ”„๋ฅผ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ„ฐ์น˜ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด ์กฐ์ž‘ ๊ฐ€๋Šฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์‹œ๊ฐํ™”์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํšจ๊ณผ์ ์ธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐ„์  ๋ณ€ํ™”๋ฅผ ์ž˜ ๋‚˜ํƒ€๋‚ด๊ณ  ๋น„๊ต ๋ถ„์„์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์˜ˆ์ธก๊ณผ ์ถ”์„ธ ๋ถ„์„์„ ์œ„ํ•œ ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋ž˜ํ”„์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋”์šฑ ์ž์„ธํžˆ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์žฅ์ ์„ ํ™œ์šฉํ•˜์—ฌ ๊บฝ์€์„  ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€