Sco*_*d C 3 python matplotlib gridlines xticks
如何绘制次要网格为 1、主要网格为 10、xticklabels 增量为20 个单位的图表?
这是我的示例代码和输出,xticklabels 每 10 个单位递增:
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')
但后来我想以 20 而不是 10 的增量显示 xticklabels 和 yticklabels,如下所示:
知道如何实现这一点吗?谢谢
只需将以下 4 行添加到代码末尾:您只需隐藏每个第二个主要刻度标签。差不多这样就可以得到你想要的东西了。[1::2]索引意味着从第二个索引开始并从那里获取每个第二个元素。我必须从第二个索引开始,因为第一个索引处的刻度标签是 0,您不想删除它。
编辑:如果您只想在有刻度标签的位置显示主要刻度,则可以进行以下修改(用箭头标记<---)。您可能会发现官方文档很有帮助。
没有主要刻度但有次要刻度的绘图
# 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 # <----
没有小刻度和大刻度的绘图
如果你还想隐藏小刻度,除了上面的代码之外,你还可以执行以下操作
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
Jayjayyy建议避免所有 for 循环的直接方法
ax.tick_params(axis='both', which='minor', width=0)   
| 归档时间: | 
 | 
| 查看次数: | 3062 次 | 
| 最近记录: |