有没有一种方法可以在不编写像这样长的代码块的情况下增加 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资源。
一个更简单的方法是使用axis
对象的set_tick_params
函数:
ax.xaxis.set_tick_params(width=5)
ax.yaxis.set_tick_params(width=5)
用这种方式可以在不担心全局状态以及不做任何关于 mpl 对象内部结构的假设的情况下,按每个轴单独更改此内容。
如果你想为你的轴中的所有刻度设置此内容,
ax = plt.gca()
ax.tick_params(width=5,...)
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()
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()]