<jupyter_start><jupyter_text>グラフの描画<jupyter_code>import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame<jupyter_output><empty_output><jupyter_text>練習問題 (1) $-1\le x\le 1$ の範囲で、$\sin(2\pi x)$ と $\cos(2\pi x)$ のグラフを重ねて表示してください。軸ラベルや凡例などを好みで追加してください。<jupyter_code>data_x = np.linspace(-1, 1, 100)
data_sin = np.sin(2*np.pi*data_x)
data_cos = np.cos(2*np.pi*data_x)

fig = plt.figure(figsize=(8, 3))
subplot = fig.add_subplot(1, 1, 1)
subplot.set_xlabel('x')
subplot.set_ylabel('y')
subplot.set_xlim(-1, 1)
subplot.plot(data_x, data_sin, label=u'y=sin 2πx')
subplot.plot(data_x, data_cos, label=u'y=cos 2πx')
subplot.legend(loc=1)<jupyter_output><empty_output><jupyter_text>(2) $-1\le x\le 1$ の範囲で、$\sin(2\pi x)$ と $\cos(2\pi x)$ のグラフを（上下2段に）別々に表示してください。軸ラベルや凡例などを好みで追加してください。<jupyter_code>data_x = np.linspace(-1, 1, 100)
data_sin = np.sin(2*np.pi*data_x)
data_cos = np.cos(2*np.pi*data_x)

fig = plt.figure(figsize=(8, 6))

subplot = fig.add_subplot(2, 1, 1)
subplot.set_xlabel('x')
subplot.set_ylabel('y')
subplot.set_xlim(-1, 1)
subplot.plot(data_x, data_sin, label=u'y=sin 2πx')
subplot.legend(loc=1)

subplot = fig.add_subplot(2, 1, 2)
subplot.set_xlabel('x')
subplot.set_ylabel('y')
subplot.set_xlim(-1, 1)
subplot.plot(data_x, data_cos, label=u'y=cos 2πx')
subplot.legend(loc=1)<jupyter_output><empty_output><jupyter_text>(3) 次は、$-10\le x\le 10,\,-10\le y\le 10$（$x,\,y$ は整数）の範囲について、$x^2 + y^2$ の値を保存した10x10行列（array）を用意して、ヒートマップを描くコードです。<jupyter_code>data = np.array([[x**2 + y**2
                  for x in range(-10, 11)] 
                 for y in range(-10, 11)])
fig = plt.figure()
subplot = fig.add_subplot(1, 1, 1)
subplot.imshow(data, origin='lower', extent=(-10, 10, -10, 10),
               cmap='jet', interpolation='nearest')<jupyter_output><empty_output><jupyter_text>`imshow` メソッドのオプション `interpolation='nearest'` を `interpolation='bilinear'` に変えると、結果がどのように変わるか確認してください。さらに、オプション `cmap='jet'` を `cmap=plt.cm.gray_r` に変えた場合を確認してください。<jupyter_code>data = np.array([[x**2 + y**2
                  for x in range(-10, 11)] 
                 for y in range(-10, 11)])
fig = plt.figure()
subplot = fig.add_subplot(1, 1, 1)
subplot.imshow(data, origin='lower', extent=(-10, 10, -10, 10),
               cmap='jet', interpolation='bilinear')
data = np.array([[x**2 + y**2
                  for x in range(-10, 11)] 
                 for y in range(-10, 11)])
fig = plt.figure()
subplot = fig.add_subplot(1, 1, 1)
subplot.imshow(data, origin='lower', extent=(-10, 10, -10, 10),
               cmap=plt.cm.gray_r, interpolation='bilinear')<jupyter_output><empty_output><jupyter_text>(4) 次は、(3)と同じデータを $0\le x\le 10,\,0\le y\le 10$ の範囲に制限したものです。(3)と同様のコードでヒートマップを描いて、`origin` オプションの有無、もしくは、`extent` オプションに指定する値を変更した際に、グラフがどのように変化するか観察してください。（ヒント：`extent` オプションは、グラフの目盛りに付ける数値を指定するもので、グラフに描くデータの範囲を指定するものではありません。） 問題文の指定どおりにグラフを描くと次が得られます。<jupyter_code>data = np.array([[x**2 + y**2
                  for x in range(0, 11)]
                 for y in range(0, 11)])
fig = plt.figure()
subplot = fig.add_subplot(1, 1, 1)
subplot.imshow(data, origin='lower', extent=(0, 10, 0, 10),
               cmap='jet', interpolation='nearest')<jupyter_output><empty_output><jupyter_text>originオプションを取ると左上を原点としてデータが表示されます。ただし、目盛りの付き方は先ほどと変わりません。<jupyter_code>data = np.array([[x**2 + y**2
                  for x in range(0, 11)]
                 for y in range(0, 11)])
fig = plt.figure()
subplot = fig.add_subplot(1, 1, 1)
subplot.imshow(data, extent=(0, 10, 0, 10),
               cmap='jet', interpolation='nearest')<jupyter_output><empty_output><jupyter_text>左上を原点として目盛りを付けるには、extentオプションの指定を変更する必要があります。<jupyter_code>data = np.array([[x**2 + y**2
                  for x in range(0, 11)]
                 for y in range(0, 11)])
fig = plt.figure()
subplot = fig.add_subplot(1, 1, 1)
subplot.imshow(data, extent=(0, 10, 10, 0),
               cmap='jet', interpolation='nearest')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.17433046993431026, 'fraction_numerical': 0.047751389590702374, 'mean_word_length': 4.430727023319616, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '233830', 'license': 'Apache-2.0', 'n_tokens_mistral': 2111, 'n_tokens_neox': 1961, 'n_words': 282, 'path': 'Solutions/04-Graph-solution.ipynb', 'repo_name': 'enakai00/numpy-pandas-tutorial', 'size': '3958'}