1

私はmatplotlibの初心者です。ステップ関数をプロットしようとしていますが、問題があります。現在、ファイルから読み取って、以下に示すようにプロットできます。ただし、上のグラフはステップではなく、下のグラフは適切なステップではありません。x と y の値を指定してステップ関数をプロットする例を見ました。ただし、ファイルから読み取る方法はわかりません。誰かが私を助けることができますか?

from pylab import plotfile, show, gca
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

fname = cbook.get_sample_data('sample.csv', asfileobj=False)

plotfile(fname, cols=(0,1), delimiter=' ')
plotfile(fname, cols=(0,2), newfig=False, delimiter=' ')
plt.show()

サンプル入力 (3 列):

27023927    3   0
27023938    2   0
27023949    3   0
27023961    2   0
27023972    3   0
27023984    2   0
27023995    3   0
27024007    2   0
27024008    2   1
27024018    3   1
27024030    2   1
27024031    2   0
27024041    3   0
27024053    2   0
27024054    2   1
27024098    2   0

注: y-axis1 の値を 3 & 2 にして、このグラフが上に表示されるようにし、別の y-axis2 の値を 0 & 1 にして下に表示されるようにしました。


現在の波形 ここに画像の説明を入力

4

3 に答える 3

1

基本的に解像度が低すぎます。下のプロットでは、ステップ (最後のものを除く) が1x 単位で発生しますが、ステップは約 1 桁大きくなります。これにより、ステップの外観が得られますが、ズームインすると、垂直線に無限のグラデーションがないことがわかります (真のステップは無限のグラデーションで変化します)。

これは、上と下の両方のプロットで同じ問題です。step関数を使用すると、これを簡単に修正できます。通常、データをインポートする方が簡単であることがわかります。この例では、強力なnumpygenfromtxtを使用しています。これにより、データが配列としてロードされますdata

import numpy as np
import matplotlib.pylab as plt

data = np.genfromtxt('test.csv', delimiter=" ")

ax1 = plt.subplot(2,1,1)
ax1.step(data[:,0], data[:,1])

ax2 = plt.subplot(2,1,2)
ax2.step(data[:,0], data[:,2])

plt.show()

ここに画像の説明を入力

Python を初めて使用する場合は、2 つのサブプロット (ax1ax2) を使用して、同じプロットにプロットするのではなく、データをプロットします (これは、値を空間的に分離するために値を追加する必要がないことを意味します)。これを介して配列の要素にアクセスします[]これは、すべての列[column, row]を意味し、列:であるインデックスを意味しますiith

于 2013-09-18T10:37:38.813 に答える