質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

9694閲覧

matplotlibのplotによる描画が上手くいきません。

WaterValley

総合スコア17

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2017/04/04 22:41

編集2017/04/04 22:43

###matplotlibのplotによる描画が上手くいきません。
プログラミング初心者です。
pythonのmatplotlibというパッケージを使って、以下の関数の描画を行いたいと考えています。
y = x**2
問題はplt.scatterでは描画されるのですがplt.plotでは座標の表示のみで曲線が表示されないという点です。
散布図ではなく、滑らかな曲線で描画したいと考えています。
もし解決方法をご存知でしたら、ご助言のほどよろしくお願い致します。

###該当のソースコード

python

1import matplotlib.pyplot as plt 2 3for x in range(0,10): 4 y = x**2 5 plt.plot(x, y) 6plt.grid(which='major',color='gray',linestyle='-') 7plt.xlim(0, 10) 8plt.ylim(0, 100) 9plt.show() 10 11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

plot() をループで回すのではなく、x, y の配列を渡してください。

質問に挙げられているコードを改造するとこんな感じでしょうか。

Python

1import matplotlib.pyplot as plt 2 3x = [] 4y = [] 5for i in range(0,10): 6 x.append(i) 7 y.append(i**2) 8 9plt.plot(x, y) 10plt.grid(which='major',color='gray',linestyle='-') 11plt.xlim(0, 10) 12plt.ylim(0, 100) 13plt.show()

私は通常はこんな感じで書いています。

Python

1import numpy as np 2import matplotlib.pyplot as plt 3 4f = lambda x: x**2 5x = np.linspace(0,10,100) 6 7plt.plot(x, f(x)) 8plt.grid(which='major',color='gray',linestyle='-') 9plt.xlim(0, 10) 10plt.ylim(0, 100) 11plt.show()

numpy.linspace(S,E,N) は 始点(S)と終点(E)をN分割した配列が作成される関数です。
上記の例では y値として 0 から 10 を100分割した配列を作成しております。

投稿2017/04/04 23:20

編集2017/04/04 23:24
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WaterValley

2017/04/05 00:19

回答ありがとうございます! 一番わかりやすかったため、ベストアンサーとさせて頂きました。
guest

0

渡してあげるデータをリスト(Sequence)にすると、座標間で線が引かれます。

python

1xlist = [] 2ylist = [] 3for x in range(0,10): 4 xlist.append(x) 5 ylist.append(x**2) 6 7plt.plot(xlist, ylist)

投稿2017/04/04 23:27

tell_k

総合スコア2120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

これでどうでしょうか。
一般的に.plot()メソッドに渡すデータはリストやタプル等の配列を渡します。

python

1import matplotlib.pyplot as plt 2 3y = [x**2 for x in range(0,10)] 4plt.plot(range(0,10), y) 5plt.grid(which='major',color='gray',linestyle='-') 6plt.xlim(0, 10) 7plt.ylim(0, 100) 8plt.show()

投稿2017/04/04 23:18

driller

総合スコア720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問