곱셈을 기억하는 구쿠를 시각화하는 포스터를 matplotlib로 작성
15919 단어 파이썬matplotlib
"일이 있어, 니가가, 씨가 씨,"라고 녀석입니다.
곱셈을 기억하는데 99편은 편리합니다만, 「어로만 기억해도 안 된다. 곱셈의 의미를 이해하지 않으면.」라고 하는 의견을 들었으므로, 곱셈의 의미도 아울러 이해할 수 있는 포스터를 Python matplotlib로 만들어 보았습니다. 코딩에 필요한 시간은 약 30분.
일본어 지원 matplotlib 설치 및 가져 오기
!pip install japanize-matplotlib
Collecting japanize-matplotlib
[?25l Downloading https://files.pythonhosted.org/packages/aa/85/08a4b7fe8987582d99d9bb7ad0ff1ec75439359a7f9690a0dbf2dbf98b15/japanize-matplotlib-1.1.3.tar.gz (4.1MB)
[K |████████████████████████████████| 4.1MB 5.5MB/s
[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from japanize-matplotlib) (3.2.2)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (1.3.1)
Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (2.8.1)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (0.10.0)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (2.4.7)
Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (1.19.5)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.6/dist-packages (from python-dateutil>=2.1->matplotlib->japanize-matplotlib) (1.15.0)
Building wheels for collected packages: japanize-matplotlib
Building wheel for japanize-matplotlib (setup.py) ... [?25l[?25hdone
Created wheel for japanize-matplotlib: filename=japanize_matplotlib-1.1.3-cp36-none-any.whl size=4120276 sha256=642a1577ef5e695d7ef7a5fc14e07ad45d62ab853ca64da221873f69938f3e6c
Stored in directory: /root/.cache/pip/wheels/b7/d9/a2/f907d50b32a2d2008ce5d691d30fb6569c2c93eefcfde55202
Successfully built japanize-matplotlib
Installing collected packages: japanize-matplotlib
Successfully installed japanize-matplotlib-1.1.3
import matplotlib.pyplot as plt
import japanize_matplotlib
구구의 포스터 그리기
fig, axes = plt.subplots(nrows=9, ncols=9, figsize=(16, 16))
for x in range(9):
for y in range(9):
axes[y][x].axis("off")
axes[y][x].set_aspect("equal")
axes[y][x].set_title("{} x {} = {}".format(x + 1, y + 1, (x + 1) * (y + 1)))
axes[y][x].set_xlim([0, 11])
axes[y][x].set_ylim([0, 11])
X = []
Y = []
for i in range(x + 1):
for j in range(y + 1):
X.append(i + 2)
Y.append(10 - j - 1)
axes[y][x].scatter(X, Y)
plt.savefig("300_dpi_scatter.png", format="png", dpi=300)
곱셈 순서?
그런데, 곱셈의 차례를 신경쓰는 선생님들이 Twitter등에서 화제가 되고 있는 것 같습니다만, 이것에 대해서는 무엇인가 말해질까요?
쥐 버전
우리 아이들은 쥐 씨들을 사랑하기 때문에 쥐 버전도 만들어 보았습니다.
fig, axes = plt.subplots(nrows=9, ncols=9, figsize=(28, 28))
for x in range(9):
for y in range(9):
axes[y][x].axis("off")
axes[y][x].set_aspect("equal")
axes[y][x].set_title("{} x {} = {}".format(x + 1, y + 1, (x + 1) * (y + 1)), fontsize=20)
axes[y][x].set_xlim([-1, 11])
axes[y][x].set_ylim([-1, 11])
X = []
Y = []
for i in range(x + 1):
for j in range(y + 1):
X.append(i + 2)
Y.append(10 - j - 1)
if (x + 1) * (y + 1) % 2 == 1:
c = 'k'
else:
c = 'r'
axes[y][x].scatter(X, Y, c=c, s=28, marker='o')
axes[y][x].scatter([xx + 0.25 for xx in X], [yy + 0.25 for yy in Y], c=c, s=12, marker='o')
axes[y][x].scatter([xx - 0.25 for xx in X], [yy + 0.25 for yy in Y], c=c, s=12, marker='o')
plt.savefig("300_dpi_scatter.png", format="png", dpi=300)
곱셈의 결과가 홀수라면 검정, 짝수라면 빨강으로 해 보았어. 하하♪
Reference
이 문제에 관하여(곱셈을 기억하는 구쿠를 시각화하는 포스터를 matplotlib로 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/maskot1977/items/c01180cc63aa67ac004e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
!pip install japanize-matplotlib
Collecting japanize-matplotlib
[?25l Downloading https://files.pythonhosted.org/packages/aa/85/08a4b7fe8987582d99d9bb7ad0ff1ec75439359a7f9690a0dbf2dbf98b15/japanize-matplotlib-1.1.3.tar.gz (4.1MB)
[K |████████████████████████████████| 4.1MB 5.5MB/s
[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from japanize-matplotlib) (3.2.2)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (1.3.1)
Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (2.8.1)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (0.10.0)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (2.4.7)
Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.6/dist-packages (from matplotlib->japanize-matplotlib) (1.19.5)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.6/dist-packages (from python-dateutil>=2.1->matplotlib->japanize-matplotlib) (1.15.0)
Building wheels for collected packages: japanize-matplotlib
Building wheel for japanize-matplotlib (setup.py) ... [?25l[?25hdone
Created wheel for japanize-matplotlib: filename=japanize_matplotlib-1.1.3-cp36-none-any.whl size=4120276 sha256=642a1577ef5e695d7ef7a5fc14e07ad45d62ab853ca64da221873f69938f3e6c
Stored in directory: /root/.cache/pip/wheels/b7/d9/a2/f907d50b32a2d2008ce5d691d30fb6569c2c93eefcfde55202
Successfully built japanize-matplotlib
Installing collected packages: japanize-matplotlib
Successfully installed japanize-matplotlib-1.1.3
import matplotlib.pyplot as plt
import japanize_matplotlib
fig, axes = plt.subplots(nrows=9, ncols=9, figsize=(16, 16))
for x in range(9):
for y in range(9):
axes[y][x].axis("off")
axes[y][x].set_aspect("equal")
axes[y][x].set_title("{} x {} = {}".format(x + 1, y + 1, (x + 1) * (y + 1)))
axes[y][x].set_xlim([0, 11])
axes[y][x].set_ylim([0, 11])
X = []
Y = []
for i in range(x + 1):
for j in range(y + 1):
X.append(i + 2)
Y.append(10 - j - 1)
axes[y][x].scatter(X, Y)
plt.savefig("300_dpi_scatter.png", format="png", dpi=300)
곱셈 순서?
그런데, 곱셈의 차례를 신경쓰는 선생님들이 Twitter등에서 화제가 되고 있는 것 같습니다만, 이것에 대해서는 무엇인가 말해질까요?
쥐 버전
우리 아이들은 쥐 씨들을 사랑하기 때문에 쥐 버전도 만들어 보았습니다.
fig, axes = plt.subplots(nrows=9, ncols=9, figsize=(28, 28))
for x in range(9):
for y in range(9):
axes[y][x].axis("off")
axes[y][x].set_aspect("equal")
axes[y][x].set_title("{} x {} = {}".format(x + 1, y + 1, (x + 1) * (y + 1)), fontsize=20)
axes[y][x].set_xlim([-1, 11])
axes[y][x].set_ylim([-1, 11])
X = []
Y = []
for i in range(x + 1):
for j in range(y + 1):
X.append(i + 2)
Y.append(10 - j - 1)
if (x + 1) * (y + 1) % 2 == 1:
c = 'k'
else:
c = 'r'
axes[y][x].scatter(X, Y, c=c, s=28, marker='o')
axes[y][x].scatter([xx + 0.25 for xx in X], [yy + 0.25 for yy in Y], c=c, s=12, marker='o')
axes[y][x].scatter([xx - 0.25 for xx in X], [yy + 0.25 for yy in Y], c=c, s=12, marker='o')
plt.savefig("300_dpi_scatter.png", format="png", dpi=300)
곱셈의 결과가 홀수라면 검정, 짝수라면 빨강으로 해 보았어. 하하♪
Reference
이 문제에 관하여(곱셈을 기억하는 구쿠를 시각화하는 포스터를 matplotlib로 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/maskot1977/items/c01180cc63aa67ac004e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우리 아이들은 쥐 씨들을 사랑하기 때문에 쥐 버전도 만들어 보았습니다.
fig, axes = plt.subplots(nrows=9, ncols=9, figsize=(28, 28))
for x in range(9):
for y in range(9):
axes[y][x].axis("off")
axes[y][x].set_aspect("equal")
axes[y][x].set_title("{} x {} = {}".format(x + 1, y + 1, (x + 1) * (y + 1)), fontsize=20)
axes[y][x].set_xlim([-1, 11])
axes[y][x].set_ylim([-1, 11])
X = []
Y = []
for i in range(x + 1):
for j in range(y + 1):
X.append(i + 2)
Y.append(10 - j - 1)
if (x + 1) * (y + 1) % 2 == 1:
c = 'k'
else:
c = 'r'
axes[y][x].scatter(X, Y, c=c, s=28, marker='o')
axes[y][x].scatter([xx + 0.25 for xx in X], [yy + 0.25 for yy in Y], c=c, s=12, marker='o')
axes[y][x].scatter([xx - 0.25 for xx in X], [yy + 0.25 for yy in Y], c=c, s=12, marker='o')
plt.savefig("300_dpi_scatter.png", format="png", dpi=300)
곱셈의 결과가 홀수라면 검정, 짝수라면 빨강으로 해 보았어. 하하♪
Reference
이 문제에 관하여(곱셈을 기억하는 구쿠를 시각화하는 포스터를 matplotlib로 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/maskot1977/items/c01180cc63aa67ac004e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)