๐Ÿ“Š ๊บผ๋‚ด๋จน๋Š” ๊ทธ๋ž˜ํ”„|Line,Bar,Scatter,Histogram,Stack Plot,Box plot,Violin Plot

์•„๋‡จ ๋ฏผ๊ท ๋ฐ์š”ยท2025๋…„ 6์›” 14์ผ
0

๋ฐ์ดํ„ฐ๋ถ„์„!

๋ชฉ๋ก ๋ณด๊ธฐ
11/12
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

1. Line Plot (์„  ๊ทธ๋ž˜ํ”„)

์‚ฌ์šฉ ์ƒํ™ฉ: ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•จ.
์˜ˆ์‹œ: ์ฃผ์‹ ๊ฐ€๊ฒฉ ์ถ”์ด, ๊ธฐ์˜จ ๋ณ€ํ™” ๋“ฑ.
์žฅ์ : ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ์˜ ์ถ”์„ธ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•… ๊ฐ€๋Šฅ.

โœ… ๋ฐฉ๋ฒ• 1: pyplot ๋ฐฉ์‹

x = [1, 2, 3, 4]
y = [10, 21, 13, 41]
plt.plot(x, y)  # ๊ธฐ๋ณธ์ ์ธ ์„  ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
plt.title('Line Plot')  # ์ œ๋ชฉ ์„ค์ •
plt.show()  # ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ

โœ… ๋ฐฉ๋ฒ• 2: subplots ๋ฐฉ์‹

z = [1, 2, 3, 4]
y = [10, 21, 13, 41]
fig, ax = plt.subplots()  # figure(์บ”๋ฒ„์Šค)์™€ axes(์ถ•) ์ƒ์„ฑ
ax.plot(z, y)  # ์„  ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
plt.show()  # ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ

๐Ÿ” ๋ฉ”์„œ๋“œ ์„ค๋ช…

  • plt.plot(x, y) : ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์œผ๋กœ ์„  ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ (pyplot ์ธํ„ฐํŽ˜์ด์Šค)
  • plt.title() : ๊ทธ๋ž˜ํ”„์˜ ์ œ๋ชฉ ์„ค์ •
  • plt.show() : ์‹œ๊ฐํ™”๋œ ๊ทธ๋ž˜ํ”„๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œ
  • plt.subplots() : ๊ฐ์ฒด์ง€ํ–ฅ ๋ฐฉ์‹์œผ๋กœ figure์™€ ์ถ• ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
  • ax.plot(x, y) : axes ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•œ ์„  ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ

2. Bar Chart (๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„)

์‚ฌ์šฉ ์ƒํ™ฉ: ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๊ฐ’์„ ๋น„๊ตํ•  ๋•Œ ์‚ฌ์šฉ๋จ.
์˜ˆ์‹œ: ๊ทธ๋ฃน๋ณ„ ํŒ๋งค๋Ÿ‰, ์ธ๊ตฌ ์ˆ˜ ๋“ฑ.
์žฅ์ : ํ•ญ๋ชฉ๋ณ„ ํฌ๊ธฐ๋ฅผ ๋ช…ํ™•ํžˆ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Œ.

โœ… ๋ฐฉ๋ฒ• 1: pyplot ๋ฐฉ์‹

categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 30]
plt.bar(categories, values)  # ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
plt.title('Bar Chart')
plt.show()

โœ… ๋ฐฉ๋ฒ• 2: subplots ๋ฐฉ์‹

fig, ax = plt.subplots()
categories = ['์ด์žฌ๋ช…', '์ด๋‚™์—ฐ', '๊น€๋™์—ฐ', '์•ˆ์ฒ ์ˆ˜']  # x์ถ•์— ํ‘œ์‹œํ•  ์นดํ…Œ๊ณ ๋ฆฌ
values = [31, 13, 8, 15]  # ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ฐ’
ax.bar(categories, values)  # ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
plt.show()  # ์ถœ๋ ฅ

๐Ÿ” ๋ฉ”์„œ๋“œ ์„ค๋ช…

  • plt.bar(x, height) : pyplot ๋ฐฉ์‹์œผ๋กœ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
  • ax.bar(x, height) : axes ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•œ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
  • plt.title() : ์ œ๋ชฉ ํ‘œ์‹œ
  • plt.show() : ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ

3. Scatter Plot (์‚ฐ์ ๋„)

์‚ฌ์šฉ ์ƒํ™ฉ: ๋‘ ๋ณ€์ˆ˜ ๊ฐ„ ๊ด€๊ณ„๋‚˜ ์ƒ๊ด€์„ฑ์„ ๋ถ„์„ํ•  ๋•Œ ์‚ฌ์šฉ.
์˜ˆ์‹œ: ํ‚ค vs ๋ชธ๋ฌด๊ฒŒ, ๊ด‘๊ณ ๋น„ vs ํŒ๋งค๋Ÿ‰.
์žฅ์ : ๋ถ„ํฌ ํŠน์„ฑ๊ณผ ๊ด€๊ณ„์„ฑ์„ ์‹œ๊ฐ์ ์œผ๋กœ ์‰ฝ๊ฒŒ ํŒŒ์•… ๊ฐ€๋Šฅ.

โœ… ๋ฐฉ๋ฒ• 1: pyplot ๋ฐฉ์‹

x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6]
y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78, 77, 85, 86]
plt.scatter(x, y)  # ์‚ฐ์ ๋„ ์ƒ์„ฑ
plt.title('Scatter Plot')
plt.show()

โœ… ๋ฐฉ๋ฒ• 2: subplots ๋ฐฉ์‹

fig, ax = plt.subplots()
ax.scatter(x, y)  # ์‚ฐ์ ๋„ ์ƒ์„ฑ
plt.show()

๐Ÿ” ๋ฉ”์„œ๋“œ ์„ค๋ช…

  • plt.scatter(x, y) : pyplot ๋ฐฉ์‹์œผ๋กœ ์‚ฐ์ ๋„ ์ƒ์„ฑ
  • ax.scatter(x, y) : axes ๊ฐ์ฒด๋ฅผ ํ†ตํ•œ ์‚ฐ์ ๋„ ์ƒ์„ฑ

4. Histogram (ํžˆ์Šคํ† ๊ทธ๋žจ)

์‚ฌ์šฉ ์ƒํ™ฉ: ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ, ๋นˆ๋„, ํŒจํ„ด ํŒŒ์•…์— ์‚ฌ์šฉ.
์˜ˆ์‹œ: ์‹œํ—˜ ์ ์ˆ˜ ๋ถ„ํฌ, ๊ณ ๊ฐ ์—ฐ๋ น์ธต.
์žฅ์ : ๋ถ„ํฌ์˜ ๋ชจ์–‘(์ •๊ทœ/์™œ๋„ ๋“ฑ)์„ ์‰ฝ๊ฒŒ ํ™•์ธ ๊ฐ€๋Šฅ.

โœ… ๋ฐฉ๋ฒ• 1: pyplot ๋ฐฉ์‹

import numpy as np
mpl.rcParams['axes.unicode_minus'] = False  # ์Œ์ˆ˜ ๊นจ์ง ๋ฐฉ์ง€
data = np.random.randn(1000)  # ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅด๋Š” ๋‚œ์ˆ˜ 1000๊ฐœ ์ƒ์„ฑ
plt.hist(data, bins=30)  # ํžˆ์Šคํ† ๊ทธ๋žจ ์ƒ์„ฑ
plt.title('Histogram')
plt.show()

โœ… ๋ฐฉ๋ฒ• 2: subplots ๋ฐฉ์‹

fig, ax = plt.subplots()
ax.hist(data, bins=30)  # 30๊ฐœ์˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜๋ˆ  ํžˆ์Šคํ† ๊ทธ๋žจ ์ถœ๋ ฅ
plt.show()

๐Ÿ” ๋ฉ”์„œ๋“œ ์„ค๋ช…

  • plt.hist(data) / ax.hist(data) : ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋ฅผ ๋ง‰๋Œ€ ํ˜•ํƒœ๋กœ ์‹œ๊ฐํ™”
  • np.random.randn(n) : ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅด๋Š” ๋‚œ์ˆ˜ ์ƒ์„ฑ

5. Stack Plot (๋ˆ„์  ์˜์—ญ ๊ทธ๋ž˜ํ”„)

์‚ฌ์šฉ ์ƒํ™ฉ: ์‹œ๊ฐ„์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์˜ ๋ณ€ํ™”๋ฅผ ๋™์‹œ์— ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ.
์˜ˆ์‹œ: ์ œํ’ˆ๋ณ„ ๋งค์ถœ ๋ณ€ํ™”, ๋ถ€์„œ๋ณ„ ์˜ˆ์‚ฐ ์‚ฌ์šฉ ์ถ”์ด.
์žฅ์ : ์ „์ฒด ๋ณ€ํ™” + ์„ธ๋ถ€ ํ•ญ๋ชฉ ๋ณ€ํ™” ๋™์‹œ ํŒŒ์•… ๊ฐ€๋Šฅ.

โœ… ๋ฐฉ๋ฒ• 1: pyplot ๋ฐฉ์‹

x = [1, 2, 3, 4, 5]
y1 = [1, 1, 2, 3, 5]
y2 = [0, 4, 2, 6, 8]
y3 = [1, 3, 5, 7, 9]
plt.stackplot(x, y1, y2, y3, labels=['Y1', 'Y2', 'Y3'])
plt.legend(loc='upper left')
plt.title('Stack Plot')
plt.show()

โœ… ๋ฐฉ๋ฒ• 2: subplots ๋ฐฉ์‹

x = [1, 2, 3, 4, 5]
y1 = [1, 2, 3, 4, 5]
y2 = [3, 8, 8, 7, 9]
y3 = [2, 7, 6, 5, 10]
fig, ax = plt.subplots()
ax.stackplot(x, y1, y2, y3, labels=['Y1', 'Y2', 'Y3'])
ax.legend(loc='upper right')
plt.show()

๐Ÿ” ๋ฉ”์„œ๋“œ ์„ค๋ช…

  • plt.stackplot() / ax.stackplot() : ์—ฌ๋Ÿฌ ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ˆ„์  ์˜์—ญ์œผ๋กœ ์‹œ๊ฐํ™”
  • legend(loc=...) : ๋ฒ”๋ก€ ์œ„์น˜ ์„ค์ •
  • plt.title() : ์ œ๋ชฉ ์„ค์ •
  • plt.show() : ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ

6. Box Plot (๋ฐ•์Šค ํ”Œ๋กฏ)

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

โœ… ๋ฐฉ๋ฒ• 1: pyplot ๋ฐฉ์‹

data = np.random.rand(6, 10)  # 0~1 ๋ฒ”์œ„์˜ ๋‚œ์ˆ˜ 6ํ–‰ 10์—ด ์ƒ์„ฑ
plt.boxplot(data)  # ๋ฐ•์Šค ํ”Œ๋กฏ ๊ทธ๋ฆฌ๊ธฐ
plt.title('Box Plot')
plt.show()

โœ… ๋ฐฉ๋ฒ• 2: subplots ๋ฐฉ์‹

fig, ax = plt.subplots()
data = np.random.rand(6, 10)
ax.boxplot(data)  # ๋ฐ•์Šค ํ”Œ๋กฏ ์ƒ์„ฑ
plt.show()

๐Ÿ” ๋ฉ”์„œ๋“œ ์„ค๋ช…

  • np.random.rand(n, m) : ๊ท ๋“ฑ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅด๋Š” ๋‚œ์ˆ˜ ๋ฐฐ์—ด ์ƒ์„ฑ
  • plt.boxplot(data) / ax.boxplot(data) : ๋ฐ•์Šค ํ”Œ๋กฏ์œผ๋กœ ๋ถ„ํฌ์™€ ์ด์ƒ์น˜ ์‹œ๊ฐํ™”

7. Violin Plot (๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ)

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

โœ… ๋ฐฉ๋ฒ• 1: pyplot ๋ฐฉ์‹

data = np.random.rand(10, 4)  # 10ํ–‰ 4์—ด์˜ ๋‚œ์ˆ˜ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
plt.violinplot(data)  # ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ ๊ทธ๋ฆฌ๊ธฐ
plt.title('Violin Plot')
plt.show()

โœ… ๋ฐฉ๋ฒ• 2: subplots ๋ฐฉ์‹

fig, ax = plt.subplots()
data = np.random.rand(10, 4)
ax.violinplot(data)  # ๋ฐ”์ด์˜ฌ๋ฆฐ ํ”Œ๋กฏ ์ƒ์„ฑ
plt.show()

๐Ÿ” ๋ฉ”์„œ๋“œ ์„ค๋ช…

  • plt.violinplot() / ax.violinplot() : ๋ฐ€๋„ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„ํฌ ์‹œ๊ฐํ™”
  • ๋ฐ•์Šค ํ”Œ๋กฏ์ฒ˜๋Ÿผ ์ค‘์•™๊ฐ’, ์‚ฌ๋ถ„์œ„์ˆ˜ ๋“ฑ๋„ ํ•จ๊ป˜ ํฌํ•จํ•จ

  • ์› ๊ทธ๋ž˜ํ”„๋Š” ์ „์ฒด์—์„œ ๊ฐ ๋ถ€๋ถ„์˜ ๋น„์œจ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ฃผ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋น„์œจ์„ ๋น„๊ตํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    - ์ž๋ฃŒ ์œ ํ˜•: ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์˜ ์ƒ๋Œ€์  ๋น„์œจ์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    - ํ™œ์šฉ: ์ „์ฒด์— ๋Œ€ํ•œ ๊ฐ ๋ฒ”์ฃผ์˜ ๋น„์œจ์„ ๋ณด์—ฌ์ค„ ๋•Œ ์œ ์šฉํ•˜๋ฉฐ, ์ฃผ๋กœ ๋น„์œจ์„ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    import matplotlib.pyplot as plt

๋ฐ์ดํ„ฐ ์ƒ์„ฑ

sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']

ํŒŒ์ด์ฐจํŠธ ๊ทธ๋ฆฌ๊ธฐ

plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Pie Chart')
plt.show()

profile
this man์„ ๊ฟˆ ์†์—์„œ ๋ณด์‹  ์ ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

0๊ฐœ์˜ ๋Œ“๊ธ€