2

コマンドを使用してスケール 1:1 の散布図を作成できましたplt.axis('equal')が、出力の両側に空白が多すぎます。図がより長方形になるように、その空白を削除する方法を探していましたが、まだ成功していません。これが私のコードです:

import matplotlib.pyplot as plt


E = [892.255, 837.587, 1227.914, 1212.741, 1053.381]
N = [395.173, 828.072, 662.757, 115.177, 519.491]
Labels = ['J1', 'J3', 'J5', 'C']

plt.scatter(E,N)
plt.annotate('J1', xy=(E[0] - 15, N[0] + 15))
plt.annotate('J3', xy=(E[1] + 10, N[1] + 5))
plt.annotate('J5', xy=(E[2] + 10, N[2] + 5))
plt.annotate('C', xy=(E[3] + 5, N[3] + 5))
plt.annotate('V1', xy=(E[4] + 15, N[4] - 20))
plt.annotate('V2', xy=(1015, 810))

plt.annotate('102,96', xy=(850, 540), size=8.5)
plt.annotate('29,99', xy=(965,655), size=8.5)
plt.annotate('65,13', xy=(1090, 640), size=8.5)
plt.annotate('119,83', xy=(1180, 500), size=8.5)
plt.annotate('82,09', xy=(980, 370), size=8.5)

plt.plot([E[0], E[4]], [N[0], N[4]], color='k', linestyle='-', linewidth=1)
plt.plot([E[1], E[4]], [N[1], N[4]], color='k', linestyle='-', linewidth=1)
plt.plot([E[2], E[4]], [N[2], N[4]], color='k', linestyle='-', linewidth=1)
plt.plot([E[3], E[4]], [N[3], N[4]], color='k', linestyle='-', linewidth=1)
plt.plot([1011.591064, E[4]], [817.704131, N[4]], color='k', linestyle='--', linewidth=1)
plt.scatter(E[4],N[4], s=6500,facecolors='none',  color='k')


plt.grid()
plt.xlabel('E (m)')
plt.ylabel('N (m)')
#plt.ylim((100,900))
#plt.xlim((800,1250))
plt.axis('equal')
plt.axis([800, 1250, 100, 900])
plt.show()

生成するもの:

出力

これは素晴らしいことですが、x 軸が 800 から 1300 になった方が良いでしょう。これを達成する方法はありますか?

4

1 に答える 1

4

"box"「調整可能な」パラメーターをデフォルトの代わりにに設定したいだけだと思います"datalim"

plt.gca().set(adjustable='box')コードの終わり近くに似たような行を追加するだけです。

上記のコードを使用すると、この変更により次の結果が得られます。

ここに画像の説明を入力

(また、x 軸の制限を 800 ~ 1250 ではなく 800 ~ 1300 に変更して、テキストの一部が端からはみ出したり、自動配置の目盛りが密集しすぎたりしないようにしました。)

于 2013-02-14T02:05:40.833 に答える