0

x軸が負荷プロファイルである負荷プロファイルデータがあり、xの複数の同じ値(一定の負荷)に対して、yの値が異なります。これまでExcelで、yを折れ線グラフで右クリックし、グラフを右クリック->選択データ->横軸データの範囲を提供することで横軸データを変更し、グラフを作成するために使用していました

サンプルチャート

私が抱えている問題は、plot(x、y)を与えようとすると、matplotlibがxの一意の値に対してyをプロットすることです。つまり、xの同じ値に対しての残りの値をすべて無視します。そして、plot(y)でプロットすると、x軸にシーケンス番号が表示されます。チェックアウトのためにxticks([0,5,10,15])を試しましたが、必要な結果を取得できませんでした。私の質問は、私が考えることができる他の選択肢と同様の方法でグラフをプロットすることは可能ですか?それは少なくとも絵のアイデアを与える同じ水平軸でplot(yとplot(x))をプロットすることでしたが、それは優れた方法ですか?

4

4 に答える 4

0

y-values特定のに対してプロットする場合x-valuesは、同じx値を持つインデックスを取得する必要があります。で作業している場合は、numpy試すことができます

import pylab as plt
import numpy as np
x=np.array([1]*5+[2]*5+[3]*5)
y=np.array([1,2,3,4,5]*3)
idx=(x==1) # Get the index where x-values are 1
plt.plot(y[idx],'o-')
plt.show()

リストを使用している場合は、次の方法でインデックスを取得できます。

# Get the index where x-values are 1
idx=[i for i, j in enumerate(x) if j == 1] 
于 2012-07-24T10:20:23.150 に答える
0

自分の質問に答えるだけで、何年も前にこの質問を投稿したときにこれを見つけました:)

def plotter(y1,y2,y1name,y2name):
    averageY1=float(sum(y1)/len(y1))
    averageY2=float(sum(y2)/len(y2))
    fig = plt.figure()
    ax1 = fig.add_subplot(111)  
    ax1.plot(y1,'b-',linewidth=2.0)
    ax1.set_xlabel("SNo")
    # Make the y2-axis label and tick labels match the line color.
    ax1.set_ylabel(y1name, color='b')
    for tl in ax1.get_yticklabels():
        tl.set_color('b')
    ax1.axis([0,len(y2),0,max(y1)+50])
    
    ax2 = ax1.twinx()
    
    ax2.plot(y2, 'r-')
    ax2.axis([0,len(y2),0,max(y2)+50])
    ax2.set_ylabel(y2name, color='r')
    for tl in ax2.get_yticklabels():
        tl.set_color('r')
    plt.title(y1name + " vs " + y2name)
    #plt.fill_between(y2,1,y1)
    plt.grid(True,linestyle='-',color='0.75')

    plt.savefig(y1name+"VS"+y2name+".png",dpi=200)

于 2015-03-03T17:15:48.517 に答える
0

あなたの説明から、「プロット」プロットコマンドの代わりに「散布」プロットコマンドを使用したいように思えます。これにより、冗長な x 値を使用できるようになります。サンプルコード:

import numpy as np
import matplotlib.pyplot as plt

# Generate some data that has non-unique x-values
x1 = np.linspace(1,50)
y1 = x1**2
y2 = 2*x1
x3 = np.append(x1,x1)
y3 = np.append(y1,y2)

# Now plot it using the scatter command
# Note that some of the abbreviations that work with plot,
# such as 'ro' for red circles don't work with scatter
plt.scatter(x3,y3,color='red',marker='o')

散布図

コメントで述べたように、便利な「プロット」ショートカットの一部は「スキャッター」では機能しないため、ドキュメントを確認することをお勧めします: http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib. pyplot.スキャッター

于 2012-07-24T13:32:23.580 に答える