꺾은선형 차트를 Jupyter Notebook에 간단히 표시

Matplotlib를 사용하여 Jupyter Notebook에서 히스토그램과 산점도를 표시하는 방법입니다.

이 기사의 내용은 다음 기사에 따라 준비한 Jupyter Notebook 환경에서 시도합니다.
Jupyter Notebook을 Docker를 사용하여 쉽게 설치하고 시작 (nbextensions, Scala도 지원) - Qiita

이 환경에서 브라우저에서 포트 8888에 액세스하여 Jupyter Notebook을 사용할 수 있습니다. 오른쪽 상단의 버튼 New > Python3을 따라 새로운 노트를 엽니 다.

히스토그램·산포도에 대해서는 이하의 기사 참조.
히스토그램 및 산점도를 Jupyter Notebook에 표시 - Qiita

데이터 준비



1열째가 x, 2열째가 y축을 상정한 샘플 데이터를 2개 준비했습니다.

test1.csv
0,100
1,110
2,108
4,120
6,124

test2.csv
0,90
1,95
2,99
3,104
4,108
5,111
6,115

Jupyter Notebook을 열고 각종 import입니다.
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

데이터를 로드합니다.
df1 = pd.read_csv("test1.csv", names=["x", "y"])
df2 = pd.read_csv("test2.csv", names=["x", "y"])
df는 Pandas의 DataFrame 객체입니다.

CSV에서 읽고 DataFrame을 다루는 방법은 이전 문서를 참조하십시오.
DataFrame에 대한 기본 작업 시도 - Qiita

CSV 파일의 데이터를 꺾은선형 차트로


plt.plot(df1["x"], df1["y"])


df1["x"] , df1["y"] 는 Pandas Series 객체로 plt.plot 에 전달할 수 있는 것 같습니다.

matplotlib.pyplot.plot — Matplotlib 3.1.1 documentation

두 개의 그래프를 겹칠 수도 있습니다.
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(df1["x"], df1["y"])
ax1.plot(df2["x"], df2["y"])



모든 함수를 그래프로


y = x^2 + 3x + 80

라는 함수의 그래프를 작성해 보겠습니다.
x3 = np.linspace(0, 6, 13)
y3 = x3 * x3 + 3.0 * x3 + 80.0
plt.plot(x3, y3)


np.linspace(0, 6, 7)0 , 0.5, 1 , 1.5, 2 , 2.5, 3 , 3.5, 4 , 4.5, 5 , 5.5, 6 라는 요소를 가지는 NumPy ndarray 라는 배열을 반환합니다. 0과 6을 양단으로 하여 모두 13개의 수치를 균등하게 늘어놓은 배열입니다.

numpy.linspace — NumPy v1.17 Manual

ndarray에 사칙 연산을 실시하면 같은 요소수의 ndarray가 되므로, x3 * x3 + 3.0 * x3 + 80.0 도 7개의 수치를 포함한 ndarray가 됩니다.

x와 y를 각각 배열로 해 plt.plot 에 건네주면 CSV 데이터와 같이 그래프에 할 수 있습니다. plt.plot 에는 방금전은 Pandas의 Series를 건네주었습니다만, NumPy의 ndarray도 건네줄 수 있는 것 같습니다.

CSV 파일의 데이터와 겹쳐서 표시할 수도 있습니다.
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(df1["x"], df1["y"])
ax1.plot(df2["x"], df2["y"])
ax1.plot(x3, y3)



옵션


plotmarker 라는 인수를 건네주면, 데이터의 점의 형태를 지정할 수 있습니다.
x3 = np.linspace(0, 6, 13)
y3 = x3 * x3 + 3.0 * x3 + 80.0
plt.plot(x3, y3, marker=".")


x3 = np.linspace(0, 6, 13)
y3 = x3 * x3 + 3.0 * x3 + 80.0
plt.plot(x3, y3, marker="o")


marker 에 지정할 수 있는 캐릭터 라인은 이하의 레퍼런스를 참조.
matplotlib.markers — Matplotlib 3.1.1 documentation
linewidth 라는 인수로 앞의 너비를 지정할 수 있습니다. 0을 지정하면 선이 없습니다.
x3 = np.linspace(0, 6, 13)
y3 = x3 * x3 + 3.0 * x3 + 80.0
plt.plot(x3, y3, marker="o", linewidth=0)



다른 옵션도 다음 참조에 나와 있습니다.
matplotlib.pyplot.plot — Matplotlib 3.1.1 documentation

이상.

좋은 웹페이지 즐겨찾기