

こんにちは、python初心者です。  
一つ質問なんですが、for文で得られた出力結果をmatplotlibでグラフにするにはどうすればよいですか？  
作成したいグラフは散布図でⅩ軸は1~10の範囲、Y軸はfor文で0~5の値にしたいと考えています。  
作成したソースコードです。

[code]

    from matplotlib import pyplot
    for y in range(6):
        x = [1,2,3,4,5,6]
        y1 = [y,y,y,y,y,y]
        pyplot.scatter(x,y1,c='b',label = 'test_data')
        pyplot.legend()
        pyplot.title('test')
        pyplot.show()
    
[/code]

上記のソースコードは実行することができるのですが、Y軸で設定したfor文の結果が  
グラフに反映されずにすべて[0,0,0,0,0,0]になってしまいます。  
pythonに詳しい方、どなたかご教授ください。


CC BY-SA 4.0
2018-10-17T06:03:45.940
49375
2019-01-28T02:24:52.873
2018-10-17T07:21:41.437
19110
30557
question
python matplotlib
matplotlibでグラフを作りたい


1枚のグラフに 6x6（計36個）の点を描画したいという理解でよろしいでしょうか。

であれば、単純に `pyplot.legend()` 以降を loopの外に出すことで対応できるかと思います。

[code]

    from matplotlib import pyplot
    for y in range(6):
        x = [1,2,3,4,5,6]
        y1 = [y,y,y,y,y,y]
        pyplot.scatter(x,y1,c='b',label = 'test_data')
    pyplot.legend()
    pyplot.title('test')
    pyplot.show()
    
[/code]


CC BY-SA 4.0
2018-10-17T09:01:24.087
49383
2018-10-17T09:01:24.087
24801
49375
answer


scatter部分はグラフの出力部分ですので、for文の外に出してやった方がいいと思います。  
yは繰り返し結果をその都度リストに加えることで0～5の範囲に並びます。  
空のリスト(y1）作成後、appendでリストにyの値を入れていきます。

[code]

    import matplotlib.pyplot as plt
    x = [1,2,3,4,5,6]
    y1=[]
    for y in range(6):
        y1.append(y)
    plt.scatter(x,y1,c='b',label = 'test_data')
    
    plt.legend()
    plt.title('test')
    plt.show()
    
[/code]

Matplotlibでより一般的な書き方に直して書いてみました。  
参考になればと思います。


CC BY-SA 4.0
2019-01-28T02:24:52.873
52363
2019-01-28T02:24:52.873
30590
49375
answer