web-dev-qa-db-ja.com

python matplotlibに(x、y)座標のリストをプロットする

私は実際のx-y座標としてpythonでmatplotlibでプロットしたいペア(a, b)のリストを持っています。現在、2つのプロットを作成しています。リストのインデックスはx座標を表し、最初のプロットのy値はペアのas、2番目のプロットのy値はペアのbsです。

明確にするために、私のデータは次のようになります。li = [(a,b), (c,d), ... , (t, u)]私はplt.plot()を不正確に呼び出すだけのワンライナーを実行したいのです。私がワンライナーを必要としなかったなら、私は自明にすることができました:

xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
  • Matplotlibにこれらのペアをx-y座標としてプロットさせるにはどうすればいいですか?

すべての助けをありがとう!

81

によると この例

import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.Rand(N)
y = np.random.Rand(N)

plt.scatter(x, y)
plt.show()

生成されます:

enter image description here

データをペアからリストに展開するには、Zipを使用します。

x, y = Zip(*li)

だから、ワンライナー:

plt.scatter(*Zip(*li))
134
sashkello

あなたが厄介な配列を持っているなら、あなたはこれをすることができます:

import numpy as np
from matplotlib import pyplot as plt

data = np.array([
    [1, 2],
    [2, 3],
    [3, 6],
])
x, y = data.T
plt.scatter(x,y)
25
Zweedeend

リスト内のすべての点を結ぶ1本の線をプロットしたい場合

plt . plot ( li [ : ] )

plt . show ( )

これは、リストの最初から最後まで、リスト内のすべてのペアをデカルト平面上の点として結ぶ線をプロットします。私はこれがあなたが望んでいたものであることを願っています。

1
Shubham Rana