gpt4 book ai didi

python - 如何在 Matplotlib 中使用不同主网格间距的 xticklabel?

转载 作者:太空宇宙 更新时间:2023-11-04 09:35:24 25 4
gpt4 key购买 nike

如何绘制次网格为 1、主网格为 10 且 xticklabels 增量为 20 的图表?

这是我的示例代码和每 10 个单位增加 xticklabels 的输出:

plt.figure(figsize=(10, 10))
ax = plt.gca()
major_ticks = np.arange(0, 60, 10)
minor_ticks = np.arange(0, 60, 1)
ax.set_xticks(major_ticks)
ax.set_xticks(minor_ticks, minor=True)
ax.set_yticks(major_ticks)
ax.set_yticks(minor_ticks, minor=True)
ax.grid(which='major')
ax.grid(which='minor', alpha=0.5)
ax.set_aspect('equal')

enter image description here

但后来我想显示 xticklabels 和 yticklabels,增量为 20 而不是 10,如下所示:

enter image description here

知道如何实现吗?谢谢

最佳答案

只需将以下 4 行添加到您的代码末尾:您只需隐藏每隔一个主要刻度标签。得到你想要的就差不多了。 [1::2]索引意味着从第二个索引开始并从那里获取第二个元素。我必须从第二个索引开始,因为第一个索引处的刻度标签是 0,您不想删除它。

编辑:如果您只想在您有刻度标签的位置使用主要刻度,您可以进行以下修改(用箭头标记 <--- )。你可能会找到 official docs有帮助。

没有主要刻度但有次要刻度的绘图

# Hiding for x-axis
for t in ax.xaxis.get_major_ticks()[1::2]:
t.label.set_visible(False)
t.tick1On = False # <----

# Hiding for y-axis
for t in ax.yaxis.get_major_ticks()[1::2]:
t.label.set_visible(False)
t.tick1On = False # <----

enter image description here

没有次要和主要刻度的绘图

如果你也想隐藏小刻度,除了上面的代码还可以做如下

for t in ax.xaxis.get_minor_ticks():
t.tick1On = False
# t._apply_params(width=0) # suggested by Jayjayyy

for t in ax.yaxis.get_minor_ticks():
t.tick1On = False
# t._apply_params(width=0) # suggested by Jayjayyy

避免所有 for 循环的直接方法是 Jayjayyy 所建议的

ax.tick_params(axis='both', which='minor', width=0)   

enter image description here

关于python - 如何在 Matplotlib 中使用不同主网格间距的 xticklabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com