/ python-array、python-2.7、matplotlibの1つのx値に対する/複数のy値のプロット

python-array、python-2.7、matplotlibの1つのx値に対して複数のy値をプロットする

ここに私のy値があります:

[1.00,
[(1.99-2.27e-17j),(0.61+9.08e-17j), (0.12-0j)],
[(1.9+4.54e-17j), (0.61-9.081e-17j), (0.12+4.54e-17j)],
[(1.99+4.5e-17j), (0.61-9.08e-17j), (0.12+4.54e-17j)],
[(1.99-2.27e-17j), (0.61+9.0e-17j), (0.12-0j)],
3.00]

そしてここに私のx値があります:

array([ 0. ,  0.2,  0.4,  0.6,  0.8,  1. ])

ご覧のように、最初と最後のx値は1つのy値に対応し、残りのx値は複数のy値に対応します。だから、y値の実数部をxに対してプロットする方法は?

回答:

回答№1は1

ここにあなたを助けるかもしれない解決策があります。 これは本当に効率的ではないことに注意してください(特に大きなデータセットの場合は問題)が、正しい軌道に乗るかもしれません。 xs そして ys 同じではない。

from numpy import *
from matplotlib import pyplot as plt

ys = [1.00,
[(1.99-2.27e-17j),(0.61+9.08e-17j), (0.12-0j)],
[(1.9+4.54e-17j), (0.61-9.081e-17j), (0.12+4.54e-17j)],
[(1.99+4.5e-17j), (0.61-9.08e-17j), (0.12+4.54e-17j)],
[(1.99-2.27e-17j), (0.61+9.0e-17j), (0.12-0j)],
3.00]

xs = array([ 0. ,  0.2,  0.4,  0.6,  0.8,  1. ])

pxs = []
pys = []
for i, yelems in enumerate(ys):
x = xs[i]
try:
for yelem in yelems:
pxs.append(x)
pys.append(yelem.real)
except TypeError:
pxs.append(x)
pys.append(yelems)

plt.plot(pxs, pys)
plt.show()

ご覧のとおり、2つの(1次元の)リストを作成して、それぞれを再利用するだけです x 必要に応じて値を pxs そして pys 同じ長さです。ザ TypeError 内側の浮動小数点数を反復しようとすると発生します for ループ、すなわち yelems リストの代わりに1つの要素だけです。

私はあなたが real の一部 yelems 複数の値がある場合(yelems 浮動小数点数ではなくリストです)。 x.

更新:

データを "直接プロット"できるかどうかの下の質問については、Matplotlibのようなデータを使用したことがありません。ここでyの次元はxの範囲で異なります。

あなたが達成したいことに応じて、あなたはそのコードについて賢明にすることでコードをきれいにすることができます ys (すなわち、一貫性のために浮動小数点数ではなく、最終リストに1を作る)、および/またはリスト補完および/またはトリックを使用する zip あなたが電話をするより「コンパクト」な感じ plot.

可能であれば、私は個人的に、エントリーの再編成の必要性を避けるために、可能な限り早期に入力データをまっすぐに取得しようとします。