web-dev-qa-db-ja.com

`rcParams`グローバル辞書を変更せずに` axes.linewidth`を設定する

したがって、次のことはできないようです(axesにはset_linewidthメソッドがないため、エラーが発生します)。

axes_style = {'linewidth':5}
axes_rect = [0.1, 0.1, 0.9, 0.9]

axes(axes_rect, **axes_style)

代わりに、次の古いトリックを使用する必要があります。

rcParams['axes.linewidth'] = 5 # set the value globally

... # some code

rcdefaults() # restore [global] defaults

簡単でクリーンな方法はありますか(x-およびy-軸パラメーターを個別に設定できるなど)?

追伸いいえの場合、なぜですか?

28
mlvljr

コメントで説明されているように、上記の回答は機能しません。スパインを使用することをお勧めします。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

# you can change each line separately, like:
#ax.spines['right'].set_linewidth(0.5)
# to change all, just write:

for axis in ['top','bottom','left','right']:
  ax.spines[axis].set_linewidth(0.5)

plt.show()
# see more about spines at:
#http://matplotlib.org/api/spines_api.html
#http://matplotlib.org/examples/pylab_examples/multiple_yaxis_with_spines.html
58
Marcos Alex
plt.setp(ax.spines.values(), linewidth=5)
11
kakty3

はい、これを行う簡単でクリーンな方法があります。

軸インスタンスから 'axhline'および 'axvline'を呼び出すことは、MPLドキュメントで承認されている手法のようです。

いずれにせよ、それは単純であり、軸の外観をきめ細かく制御できます。

したがって、たとえば、このコードはプロットを作成してx軸を緑に着色し、x軸の線幅をデフォルト値の「1」から「4」の値に増やします。 y軸は赤く色付けされ、y軸の線幅は「1」から「8」に増加します。

from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(111)

ax1.axhline(linewidth=4, color="g")        # inc. width of x-axis and color it green
ax1.axvline(linewidth=4, color="r")        # inc. width of y-axis and color it red

PLT.show()

Axhline/axvline関数は追加の引数を受け入れます。追加の引数を使用すると、見た目を好きなように変更できます。特に、〜matplotlib.lines.Line2Dプロパティは有効なkwargsです(たとえば、 'alpha'、 'linestyle'、capstyle、 joinstyle)。

5
doug

Pyplotを使用して(非長方形の)軸を再帰的に作成している場合は、各axの線幅パラメーターを変更できます。

例えば:

import matplotlib.pyplot as plt

plt.figure(figsize = figsize)
fig, ax = plt.subplots(figsize = figsize)
for shape in sf.shapeRecords():
    x = [i[0] for i in shape.shape.points[:]]
    y = [i[1] for i in shape.shape.points[:]]
    ax.plot(x, y, 'k', linewidth=5)

ドキュメントについては、 MPL.axes documentation を参照してください(「その他のパラメーター」までスクロールダウンします-> ** kwargs)

N.B. 「1つのplotコマンドで複数の線を作成する場合、kwargsはそれらすべての線に適用されます。」

この解決策は他の場所で尋ねられた別の質問に関連しているかもしれませんが、私はこのページが私自身の問題の解決策を探しているのを見つけたので、同じことを探している他の人を助けることができます。

0
Willem