web-dev-qa-db-ja.com

matplotlibプロットの原点軸(x、y)を表示

次の単純なプロットがあり、Origin軸(x、y)を表示したいと思います。私はすでにグリッドを持っていますが、強調するx、y軸が必要です。

enter image description here

これは私のコードです:

x = linspace(0.2,10,100)
plot(x, 1/x)
plot(x, log(x))
axis('equal')
grid()

this の質問を見ました。受け入れられた答えは、「Axis spine」を使用することを示唆しており、いくつかの例へのリンクだけです。ただし、サブプロットを使用した例は複雑すぎます。私の簡単な例では、「軸の背骨」の使い方を理解できません。

30
Martin Vegter

subplotsの使用はそれほど複雑ではありません。スパインは複雑かもしれません。

愚かな、簡単な方法:

_%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')

ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')
_

そして私は得る:

with axlines

(xの下限はゼロであるため、垂直軸は表示されません。)

単純なスパインを使用した代替

_%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')

# set the x-spine (see below for more info on `set_position`)
ax.spines['left'].set_position('zero')

# turn off the right spine/ticks
ax.spines['right'].set_color('none')
ax.yaxis.tick_left()

# set the y-spine
ax.spines['bottom'].set_position('zero')

# turn off the top spine/ticks
ax.spines['top'].set_color('none')
ax.xaxis.tick_bottom()
_

with_spines

seaborn(私のお気に入り)を使用する代替

_import numpy as np
import matplotlib.pyplot as plt
import seaborn
seaborn.set(style='ticks')

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')
seaborn.despine(ax=ax, offset=0) # the important part here
_

with_seaborn

脊椎の_set_position_メソッドを使用する

_set_position_スパインのメソッド のドキュメントは次のとおりです。

背骨の位置は、2タプル(位置タイプ、量)で指定されます。位置タイプは次のとおりです。

  • 'outward':指定されたポイント数だけデータエリアからスパインを配置します。 (負の値は、
    背骨内側。)

  • 'axes':指定されたAxes座標に脊椎を配置します(0.0〜1.0)。

  • 'data':指定されたデータ座標に脊椎を配置します。

さらに、略記法は特別な位置を定義します:

  • '中央'->( '軸'、0.5)
  • 「ゼロ」->(「データ」、0.0)

次のように、左の脊椎をどこにでも配置できます。

ax.spines['left'].set_position((system, poisition))

ここで、systemは 'outward'、 'axes'、または 'data'であり、その座標系の場所にあるpositionです。

53
Paul H