我试图根据日期绘制一些数据,但我遇到了一个关于网格的问题.我想要在x轴上显示日期,主要刻度表示月份,次要刻度表示周.然而,对于网格,我只想看到较小的.在建造地块时,我注意到有一个part of the grid missing for November:

enter image description here

这是再现上述问题的最小示例.

from datetime import datetime

import matplotlib as mpl
from matplotlib import pyplot as plt
from matplotlib import dates as mdates


fig, ax = plt.subplots()

ax.xaxis.set_minor_locator(mdates.WeekdayLocator(byweekday=mdates.MO))
ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(
    mdates.ConciseDateFormatter(mdates.AutoDateLocator())
)

ax.set_xlim(datetime(2021, 9, 1), datetime(2022, 1, 1))

ax.xaxis.grid(color="gray", linestyle="dashed", alpha=0.2, which="minor")

plt.show()

我假设这是因为不可见的主线与应该绘制的小线段重叠.有人能解释一下发生了什么以及如何解决这个问题吗?

推荐答案

原因是,次要记号线显示在次要记号位置,如果次要记号与主要记号位置重合,则会 suppress 次要记号.

这种行为可以由remove_overlapping_locs控制.

背景

ax.xaxis.remove_overlapping_locs = False

结果

enter image description here

Python相关问答推荐

try 与gemini-pro进行多轮聊天时出错

使用FASTCGI在IIS上运行Django频道

如何将双框框列中的成对变成两个新列

带条件计算最小值

如何在Windows上用Python提取名称中带有逗号的文件?

如何在polars(pythonapi)中解构嵌套 struct ?

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

如何请求使用Python将文件下载到带有登录名的门户网站?

如何获取numpy数组的特定索引值?

我如何根据前一个连续数字改变一串数字?

在matplotlib中删除子图之间的间隙_mosaic

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

在代码执行后关闭ChromeDriver窗口

如何过滤组s最大和最小行使用`transform`'

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

如何重新组织我的Pandas DataFrame,使列名成为列值?

504未连接IB API TWS错误—即使API连接显示已接受''

启动线程时,Python键盘模块冻结/不工作

为什么在安装了64位Python的64位Windows 10上以32位运行?

Pandas:新列,从列表中采样,基于列值