8

データ単位で幅のある線を描く方法を見つけようとしています。たとえば、次のコードスニペットでは、幅80の線の水平部分を常にy=-40からy=+ 40マークまで延長し、座標系の制限があってもそのように維持する必要があります。変化する。matplotlibのLine2Dオブジェクトでこれを実現する方法はありますか?同様の効果を得る他の方法はありますか?

from pylab import figure, gca, Line2D

figure()
ax = gca()
ax.set_xlim(-50, 50)
ax.set_ylim(-75, 75)

ax.add_line(Line2D([-50, 0, 50], [-50, 0, 0], linewidth=80))

ax.grid()

画面座標の線幅

4

2 に答える 2

8

あなたはfill_betweenを使うことができます:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_xlim(-50, 50)
ax.set_ylim(-75, 75)
x = [-50, 0, 50]
y = np.array([-50, 0, 0])

ax.fill_between(x,y-30,y+30)

ax.grid()
plt.show()

収量

ここに画像の説明を入力してください

しかし、によって生成された線とは異なり

ax.add_line(Line2D([-50, 0, 50], [-50, 0, 0], linewidth=80))

線の垂直方向の太さは、データ座標で常に一定になります。

ドキュメントへのリンクも参照してください。

于 2013-02-10T14:00:34.127 に答える
2

データ単位で線幅の線を引くには、この回答を確認することをお勧めします。

コマンドのシグネチャdata_linewidth_plotによく似たクラスを使用します。plt.plot()

l = data_linewidth_plot( x, y, ax=ax, label='some line', linewidth = 1, alpha = 0.4)

linewidth引数は、(y-)データ単位で解釈されます。

于 2017-03-23T09:54:07.857 に答える