35

次のような長いコードを記述せずに、matplotlibのティックの太さとサイズを増やす方法はありますか?

for line in ax1.yaxis.get_ticklines():
    line.set_markersize(25)
    line.set_markeredgewidth(3)

このコードの問題は、通常多くのCPU使用率を要するループを使用することです。

4

3 に答える 3

54

より簡単な方法は、オブジェクトの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_paramsdoc と tick_params の有効なキーワードを見てください。

于 2013-02-05T16:56:13.313 に答える
21

次のようなものを使用して、すべての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()
于 2013-02-05T11:44:28.003 に答える
6

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()]
于 2013-02-05T14:13:05.827 に答える