matplotlib蜱厚度

时间:2013-02-05 10:59:40

标签: matplotlib

有没有办法在matplotlib中增加刻度的厚度和大小,而不必像这样写一长段代码:

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

这段代码的问题在于它使用的循环通常需要大量的CPU使用。

3 个答案:

答案 0 :(得分:42)

更简单的方法是使用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 valid keywords

答案 1 :(得分:14)

您可以使用

中的rcParams更改所有matplotlib默认值
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()

答案 2 :(得分:5)

您可以使用matplotlib.pyplot.setp

plt.setp(ax.yaxis.get_ticklines(), 'markersize', 25)
plt.setp(ax.yaxis.get_ticklines(), 'markeredgewidth', 3)

你也可以使用列表理解,虽然没有返回值可能没有多大意义,除了减少代码中的行数see e.g. here

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