2

ファイルからいくつかのデータを読み取ってから、最初の行を取得し、matplotlib を使用して他のデータに対してグラフにプロットしようとしています。

私のコードは

import numpy as np    
import matplotlib.pyplot as plt

with open("file path",'r') as f:
    s=  f.readlines()

    y=(s[0])

x=np.arange(0.00,9.04,0.04)

plt.plot(x,y)

plt.ylabel('Probability Distribution')

plt.xlabel('Photometric Redshift')
plt.title('r2')                 
plt.show()

次のエラー メッセージが表示されます

Traceback (most recent call last):
  File "dsl_2_python.py", line 36, in <module>
    plt.plot(x,y)
  File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 2817, in plot
    ret = ax.plot(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 3996, in plot
    for line in self._get_lines(*args, **kwargs):
  File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 330, in _grab_next_args
    for seg in self._plot_args(remaining, kwargs):
  File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 289, in _plot_args
    linestyle, marker, color = _process_plot_format(tup[-1])
  File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 126, in _process_plot_format

    'Unrecognized character %c in format string' % c)

ValueError: Unrecognized character 0 in format string

>

yリストではなく文字列であることと関係があると思いますsが、リストのようで、なぜ文字列になるのか、リストにする方法がわかりませんy。誰でも助けることができますか?

4

2 に答える 2

2

ファイル「sample.txt」を次のように指定します。

2 4 6 8 10 12 20
1 2 3 4  5  6  7

numpy.loadtxtファイルを読み込むために使用したい場合があります

import numpy as np
import pylab as plt

S = np.loadtxt("sample.txt")
Y = S[0]
X = np.linspace(0.00,9.04,Y.shape[0])

plt.plot(X,Y)
plt.show()
于 2013-05-16T14:41:08.923 に答える
2

問題を正しく特定しましたy。文字列です。 readlines文字列のリストを返します (ファイルの各行が文字列です)。plot(x, y)matplotlibを呼び出すyと、行形式文字列として解析しようとしています (形式が間違っているため失敗しています) (doc)。これはバグではなくmatplotlib、入力に対して正しく応答しています。

あなたがする必要があるのは、行を数値のリストに変換することです。あなたのデータファイルを見なければ推測することしかできませんが、次のようなものだと思います

y_flt = [float(n) for n in s[0].split()]
plt.plot(x, y_flt)

トリックを行います。

于 2013-05-16T14:37:47.623 に答える