60368


python初心者なのですが、曲線（√(1-x^2)）がうまく描けません。二番目の図みたいにするにはどうしたらいいでしょうか？

[code]

    import matplotlib.pyplot as plt
    import numpy
    x=rand(100) #100個の一様乱数
    plt.plot(numpy.sqrt(1-x**2),x)
    
[/code]

[![python](https://i.stack.imgur.com/uIFzf.png)](https://i.stack.imgur.com/uIFzf.png)

[![r](https://i.stack.imgur.com/HQ8gT.png)](https://i.stack.imgur.com/HQ8gT.png)

二番目の図のようなきれいな曲線にしたいですが、どうプログラムを書けばいいのでしょうか？曲線用の関数などあったら教えてください。  
補足：二番目の図はｒで書きました。

[code]

     #R
     x=runif(100) #100個の一様乱数
     curve(sqrt(1-x^2))
    
[/code]


CC BY-SA 4.0
2019-11-08T08:38:24.197
60359
2019-11-09T23:26:38.523
2019-11-08T08:46:25.673
34824
34824
question
python r matplotlib
matplotlib.pyplotのplotできれいな曲線が書けません。


まず，なぜそのような出力になっているかと言うと，Numpyの配列の順番に点同士を結んでいるからで，sortすればよいというのは一つの回答ではあります．  
一方で，そういったプロットを行う場合には， `linspace` という関数を使った方がよいです．これは，指定した区間上の等間隔な数列を得るための関数です．  
例えば，`numpy.linspace(0, 1, 11)`とすると，以下のような配列が得られます．

[code]

    [0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]
    
[/code]

参考まで，`linspace`を用いたコード例と結果を示します．

[code]

    import matplotlib.pyplot as plt
    import numpy
    
    x = numpy.linspace(0, 1, 100)
    plt.plot(x, numpy.sqrt(1-x**2))
    plt.show()
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/1IJlx.png)](https://i.stack.imgur.com/1IJlx.png)

参考：<https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html>

## 追記

`plot`の引数はx,yの順なので，Rの`curve(func(x))`と等価なことをしたければ，`plot(x,
func(x))`とする必要があります．


CC BY-SA 4.0
2019-11-09T09:00:25.757
60368
2019-11-09T23:26:38.523
2019-11-09T23:26:38.523
36544
36544
60359
answer