2017-12-15 16 views
0

これが私のデータの構造です:Matplotlib最大限に拡大するためのset_xlim()/ set_ylim()またはset_xbound()/ set_ybound()

print("test_data: " + str(test_data)) 

#test_data: [[-1.3869276 0.76189806] 
# [-1.3870304 0.76177611] 
# [-1.38695643 0.76194005] 
# ..., 
# [-1.38663699 0.76174211] 
# [-1.38670514 0.76161662] 
# [-1.3865974 0.76163099]] 

それは、緯度/経度の座標のnumpyの配列は、ラジアンに変換されます。

matplot-figureのxとyの制限値/境界を設定する際に問題があります。私はset_xlim()/set_ylim()set_xbound()/set_ybound()の両方を試してみましたが、結果は満足のいくものではない。私のデータの歪んだビューで

set_xlim()set_ylim()結果: enter image description here

.. set_xbound()set_ybound()があまりにズームインしながら、多くの(y軸のさらに作物ラベル):

:これは私のコードである enter image description here

私はこれを行う場合

test_data = np.radians(points) 
    #get max data extent 
    limXMin = np.max(test_data[0]) 
    limXMax = np.max(test_data[1]) 
    limYMax = np.min(test_data[0]) 
    limYMin = np.min(test_data[1]) 
    #print max data extent: 
    print(limXMin) 
    print(limXMax) 
    print(limYMin) 
    print(limYMax) 
    #0.761924200543 
    #0.761882818787 
    #-1.38701148104 
    #-1.3868174877 

    #create figure 
    fig = plt.figure(figsize=(11, 8), dpi=80) 
    #print current extent 
    print(str(plt.xlim())) 
    print(str(plt.ylim())) 
    #(0.0, 1.0) 
    #(0.0, 1.0) 
    ax = fig.add_subplot(1,1,1) # 1 Row, 1 Column and the first axes in this grid 
    plt.scatter(test_data.T[0], test_data.T[1], color='b', **plot_kwds) 
    #modify extent (Fig.1) 
    ax.set_xlim([limXMin, limXMax]) 
    ax.set_ylim([limYMin, limYMax]) 
    #modify extent (Fig.2) 
    ax.set_xbound(limXMin, limXMax) 
    ax.set_ybound(limYMin, limYMax) 
    ax.figure.savefig(pathname + '/graph_1.png') 

は代わりに、:

plt.figure(figsize=(11, 8), dpi=80) 
    plt.autoscale(enable=True) 
    fig = plt.scatter(test_data.T[0], test_data.T[1], color='b', **plot_kwds) 
    fig.figure.savefig(pathname + '/graph_1.png') 

を私はあまりにも多くの境界線との完全な範囲を取得します。

enter image description here

答えて

1

何かが最小値と最大値のあなたの定義と間違っていた:プロットエリアのほぼ半数は、データが表示されません。また、データの転置を忘れている可能性もあります。私は私をtransposeする必要があることを認識した後

+0

私はこのことを認識していますが、その後私が手limXMin = -1.3868174877とlimXMax = 0.761924200543/limYMin = -1.38683883307とlimYMax = 0.761675019886 – Alex

+0

私は本当にあなたは私たちがあなたなしでここに何をテストするために期待されていない願っています問題の[mcve]を提供します。 – ImportanceOfBeingErnest

+0

私が不明な場合は多くの謝罪、私は元の投稿 – Alex

0

:それはおそらく

set_xlim()/set_ylimset_xbound()/set_ybound()の両方が同じ数字を生成、提供されたデータを使用して

limXMin = np.min(test_data.T[0]) 
limXMax = np.max(test_data.T[0]) 

limYMin = np.min(test_data.T[1]) 
limYMax = np.max(test_data.T[1]) 

する必要があります私は正しい結果を得ることができた:

limYMin = np.min(test_data.T[1]) 
    limYMax = np.max(test_data.T[1]) 
    limXMin = np.min(test_data.T[0]) 
    limXMax = np.max(test_data.T[0]) 

    fig = plt.figure(figsize=(11, 11), dpi=80) 
    plt.gca().set_xlim([limXMin, limXMax]) 
    plt.gca().set_ylim([limYMin, limYMax]) 
    fig = plt.scatter(test_data.T[0], test_data.T[1], color='b', **plot_kwds) 
    fig.figure.savefig(pathname + 'graph_01.png') 

.Tは何らかの形で配列を回すので、行ではなく列でアクセスできます。さらに、plt.gca().set_xlimplt.gca().set_ylimを使用すると、軸とサブプロットの作成を避けることができます(例:ax1 = plt.subplot(131)、次にax.set_xlim(left=limXMin,right=limXMax))。

私は正しい方向に向いています(上記の答えを参照)。多くのおかげでImportanceOfBeingErnest!

enter image description here

関連する問題