

以下の問題のグラフの書き方をおしえてください！！

> 「for文、range」を用いることで、データ：
[code]

>     x = [1,2,3,4,5,6,.......496,497,498,499,500]
>     y = [sin(1),sin(2),.............sin(499),sin(500)]
>  
[/code]

>
> matplotlib を用いて折れ線グラフを描け


CC BY-SA 4.0
2021-05-19T13:41:03.413
75953
2021-05-20T01:21:10.980
2021-05-20T01:21:10.980
3060
45405
question
python python3 matplotlib
matplotlibで折れ線グラフを書く方法


質問ですが、なぜforとrangeを使わなきゃいけない？

通常の場合は、下記の通り使えばOK：

[code]

    import numpy as np
    import matplotlib.pyplot as plt
    x = np.linspace(1,500,num=500,endpoint=True)
    y = np.sin(x)
    plt.figure(figsize=(14,6))
    plt.plot(x, y, '-o')
    plt.show()
    
[/code]

ループでデータを生成して(linspaceを使わず)描く：

[code]

    x=[]     #listタイプ
    y=[]     #listタイプ
    for i in range(500):
        x1.append(i+1)    #list.append(a) aをlistの最後に加えarrayじゃ無理
        y1.append(np.sin(i+1))
    plt.figure(figsize=(14,6))
    plt.plot(x, y, '-o')
    plt.show()
    
[/code]

pythonはループに弱いから、効率のためできる限り多重ループを回避してね


CC BY-SA 4.0
2021-05-19T14:32:27.783
75954
2021-05-19T15:24:24.400
2021-05-19T15:24:24.400
3068
45407
75953
answer


> 「for文、range」を用いることで

課題の前提条件を遵守するのであれば以下の様に。

[code]

    from matplotlib import pyplot as plt
    from math import sin
    
    x = list(range(1, 501))
    y = []
    for v in x:
      y.append(sin(v))
    
    plt.plot(x, y)
    plt.show()
    
[/code]

参考までに、Python 3.8 以降であれば以下の様にも書けます。

[code]

    from matplotlib import pyplot as plt
    from math import sin
    
    plt.plot((x:=list(range(1, 501))), list(map(sin, x)))
    plt.show()
    
[/code]


CC BY-SA 4.0
2021-05-19T14:59:11.167
75955
2021-05-19T14:59:11.167
75953
answer