numpy 如何在matplotlib中跳过一些轴标签但保留刻度?

odopli94  于 5个月前  发布在  其他
关注(0)|答案(3)|浏览(58)

我想跳过坐标轴上的每N个标签,但保留matplotlib(just like y-axis in this photo)中的刻度。有人知道如何做到这一点吗?
下面是我的代码:

import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=[4, 5.5])

xax  = np.arange(0, 120, 20)
yax  = np.arange(1, 13, 1)
data = yax**1.8

ax.set_xlim(0, 100)
ax.set_ylim(1, 12)
ax.set_xticks(xax)
ax.set_yticks(yax)
ax.set_xticklabels(xax, fontsize=11)
ax.set_yticklabels(yax, fontsize=11)

ax.plot(data, yax, c='blue')
ax.grid(which='major', color='black',  linewidth=0.1, alpha=0.6)
plt.savefig('test.png', dpi=600)

字符串
谢谢

41ik7eoe

41ik7eoe1#

为了得到你提供的类似的数字,我会添加这两行:

yticks_label = ['{}'.format(num) if num % 2 != 0 else ' ' for num in yax]
plt.yticks(yax, yticks_label, fontsize=11)

字符串
并删除这一行:

ax.set_yticklabels(yax, fontsize=11)


我在机器里算了一下,得出了这个数字。


的数据

lmvvr0a8

lmvvr0a82#

我没有足够的声誉来评论,但你可以看看小滴答声。

ax.tick_params(which='major', length=7)
ax.tick_params(which='minor', length=4, color='r')

字符串
然后根据自己的喜好定制这些值。

8fq7wneg

8fq7wneg3#

类似于Jason的回答:使用列表解析、模数和枚举。

yax = ax.get_yticks()
yticks_label = [f"{num}" if i % 2 !=0 else '' for i,num in enumerate(yax)]
ax.set_yticks(yax, yticks_label)

字符串

相关问题