私はテキストファイルからデータを取得し、matplotlibのanimation.FuncAnimationモジュールを使ってプロットしています。ここで私は実行を作るしようとしている私のコードは正しくMatplotlib FuncAnimationはx軸をプロットしません
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style
style.use('ggplot')
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
def animate(i):
graph_data = open('example.txt', 'r').read()
lines = graph_data.split('\n')
xs = []
ys = []
for line in lines:
x,y = line.split(',')
xs.append(x)
ys.append(y)
ax1.clear()
ax1.plot(xs, ys)
animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
example.txtには、私がしたいデータの(x、y)のペアが含まれている(スペースの都合のため省略)18行のテキストファイルですプロットするのが好きです。しかし、matplotlibはx値を順番にプロットしていません。つまり、10に達すると、1から2の間を挟むように折り返します。かなり悪いグラフになります。
私の実装で何が問題なのか把握するのに問題があります。私はそれらをプロットする前に値をソートしようとしましたが、プロットはまだ出ていますlike this。
すべてのご協力ありがとうございます。私はドキュメントページとStackOverflowをしばらく見ていましたが、この同じ問題を抱えている人はいないようです。
'example.txt'の外観はどうですか? 'x'と' y'座標はスペースかタブかコンマで区切られていますか?また、どのアニメーションを試していますか? 18ポイントを次々に表示したいですか? –
データを数値に変換するのを忘れてしまった。現在の方法では、テキストファイルから文字列を読み込むので、プロットはアルファベット順に "1"、 "10"、 "100"、 "11"、 "110"、 "2"となります。また、 "1"は "100"から "10"、 "dog"から "cat"として "10"から離れていることにも注意してください。それは通常望ましくない。 'xs.append(float(x))'を使うか、それ以上に 'numpy.loadtxt'でファイルを読み込みます。 – ImportanceOfBeingErnest
^これ!コースのありがとうございました。コメントを正解とするにはどうすればよいですか? – Joseph