2017-04-03 5 views
1

単一の列であるテキストファイルからデータをロードしています。私はこのデータを散布図にしたいが、私は1つの軸(ロードされたデータ)しか持っていない。私の他の軸では、読み込まれたすべての値に一致する値が得られるまでカウントアップするだけです(つまり、0,1,2,3,4,5、...)。散布図では、軸を自動入力したい

ありがとうあらかじめ!

+0

あなたのデータ配列を供給することができます。 'x_axis = range(len(y_axis_data))'です。 – roganjosh

答えて

1

はシリーズsに割り当てられたデフォルトのインデックスは1少ないシリーズの長さに0なりますtxt

from io import StringIO 
import pandas as pd 

txt = """4 
5 
2 
6 
1 
4 
3 
6 
2 
7""" 

s = pd.read_csv(StringIO(txt), header=None, squeeze=True) 

サンプルファイルを考えてみましょう。インデックスをリセットして、それをデータフレームに入れてプロットすることができます。

s.reset_index(name='x').plot.scatter('x', 'index') 

enter image description here

+0

私は 'txt'がどのようにグラフに表示されるのか、少し失っています。いくつかの 'x'ラベルには複数の' y'データがあり、それ以外のラベルにはありません。 'x = 4'の場合、' y = 0'と 'y = 5'の両方の値を生成していますか? – roganjosh

+0

@roganjosh私たちは '(0、4)'と '(5、4)'の両方をプロットします。なぜなら、 '4'はゼロのインデックス位置と5番目のインデックス位置です。 – piRSquared

+0

ああ、意味がある。私が頭に入れていた質問から、OPは読み込まれたすべての値に対して一意のインデックスを求めていただけです(このような場合、グラフの有用性はわかりません)。問題は特に明確ではない。 – roganjosh

1

のNO xデータが指定されていない場合matplotlibのは自動的にYデータのインデックスを使用します。だから、単にあなたはそれを自分で作成することができ、プロット関数にpyplot.plot(data)

import io 
import numpy as np 
import matplotlib.pyplot as plt 

csv = u"13.7\n12.4\n10.1\n7.4\n3.7\n9.4\n8.2" 

a = np.loadtxt(io.StringIO(csv)) 
plt.plot(a, marker="o", ls="") 

plt.xlabel("index") 
plt.ylabel("data") 

plt.show() 

enter image description here