次のような長いコードを記述せずに、matplotlibのティックの太さとサイズを増やす方法はありますか?
for line in ax1.yaxis.get_ticklines():
line.set_markersize(25)
line.set_markeredgewidth(3)
このコードの問題は、通常多くのCPU使用率を要するループを使用することです。
次のような長いコードを記述せずに、matplotlibのティックの太さとサイズを増やす方法はありますか?
for line in ax1.yaxis.get_ticklines():
line.set_markersize(25)
line.set_markeredgewidth(3)
このコードの問題は、通常多くのCPU使用率を要するループを使用することです。
より簡単な方法は、オブジェクトのset_tick_params
関数を使用することです:axis
ax.xaxis.set_tick_params(width=5)
ax.yaxis.set_tick_params(width=5)
このようにすると、グローバルな状態を心配したり、mpl オブジェクトの内部構造を想定したりすることなく、軸ごとにこれを変更できます。
これを軸のすべての目盛りに設定したい場合は、
ax = plt.gca()
ax.tick_params(width=5,...)
set_tick_params
doc と tick_params の有効なキーワードを見てください。
次のようなものを使用して、すべてのmatplotlib
デフォルトを変更できますrcParams
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
# set tick width
mpl.rcParams['xtick.major.size'] = 20
mpl.rcParams['xtick.major.width'] = 4
mpl.rcParams['xtick.minor.size'] = 10
mpl.rcParams['xtick.minor.width'] = 2
x = np.linspace(0., 10.)
plt.plot(x, np.sin(x))
plt.show()
matplotlib.pyplot.setpを使用できます
plt.setp(ax.yaxis.get_ticklines(), 'markersize', 25)
plt.setp(ax.yaxis.get_ticklines(), 'markeredgewidth', 3)
リスト内包表記を使用することもできますが、戻り値がないことはおそらくあまり意味がありませんが、コードの行数を減らすことに加えて、ここなどを参照してください
[line.set_markersize(25) for line in ax1.yaxis.get_ticklines()]
[line.set_markeredgewidth(3) for line in ax1.yaxis.get_ticklines()]