首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matplotlib刻度线厚度

matplotlib刻度线厚度
EN

Stack Overflow用户
提问于 2013-02-05 18:59:40
回答 3查看 45.8K关注 0票数 33

有没有一种方法可以在matplotlib中增加tick的厚度和大小,而不必像这样写一段很长的代码:

代码语言:javascript
运行
复制
for line in ax1.yaxis.get_ticklines():
    line.set_markersize(25)
    line.set_markeredgewidth(3)

这段代码的问题是它使用了一个循环,这通常会占用大量的CPU。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-06 00:56:13

一种更简单的方法是使用axis对象的set_tick_params函数:

代码语言:javascript
运行
复制
ax.xaxis.set_tick_params(width=5)
ax.yaxis.set_tick_params(width=5)

这样做意味着你可以在每个轴的基础上改变这一点,而不需要担心全局状态,也不需要对mpl对象的内部结构做任何假设。

如果要为轴上的所有刻度设置此项,

代码语言:javascript
运行
复制
ax = plt.gca()
ax.tick_params(width=5,...)

查看set_tick_params文档和tick_params valid keywords

票数 52
EN

Stack Overflow用户

发布于 2013-02-05 19:44:28

您可以使用rcParams更改所有matplotlib默认值,如下所示

代码语言:javascript
运行
复制
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()
票数 20
EN

Stack Overflow用户

发布于 2013-02-05 22:13:06

您可以使用matplotlib.pyplot.setp

代码语言:javascript
运行
复制
plt.setp(ax.yaxis.get_ticklines(), 'markersize', 25)
plt.setp(ax.yaxis.get_ticklines(), 'markeredgewidth', 3)

您还可以使用列表理解,尽管除了减少代码see e.g. here中的行数之外,没有返回值可能没有多大意义

代码语言:javascript
运行
复制
[line.set_markersize(25) for line in ax1.yaxis.get_ticklines()]
[line.set_markeredgewidth(3) for line in ax1.yaxis.get_ticklines()]
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14705904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档