我使用相同的代码创建下图中的每个子图,我无法理解为什么其中一个子图缺少网格线。

Figure showing grid lines on each subplot except for location (2,2)

奇怪的是,我可以在事实之后添加网格线:

In [18]: ax2b
Out[18]: <AxesSubplot:title={'center':'12:10-12:16 (after 13:00 PST Oct 26th)'}>

In [19]: ax2b.xaxis.grid(which='major'); fig
Out[19]: 

Figure with subplot with newly-added major x-axis grid lines

但这正是我的脚本的工作原理,所以我不明白为什么(2,2)处的子图被忽略了。

我已经尽了最大努力来排除拼写错误和错误。以下是用于生成绘图的脚本(抱歉,数据未包括在内):

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import ticker

run5 = combine_run5_data()

pdtpst = '2022-10-26T13:00'
colname = 'Licor_CO2'
cycle1a = run5[:pdtpst].between_time('05:00', '05:35').groupby(lambda idx: idx.dayofyear)
cycle2a = run5[:pdtpst].between_time('11:00', '11:35').groupby(lambda idx: idx.dayofyear)
cycle3a = run5[:pdtpst].between_time('17:00', '17:35').groupby(lambda idx: idx.dayofyear)
cycle4a = run5[:pdtpst].between_time('23:00', '23:35').groupby(lambda idx: idx.dayofyear)
cycle1b = run5[pdtpst:].between_time('06:00', '06:35').groupby(lambda idx: idx.dayofyear)
cycle2b = run5[pdtpst:].between_time('12:00', '12:35').groupby(lambda idx: idx.dayofyear)
cycle3b = run5[pdtpst:].between_time('18:00', '18:35').groupby(lambda idx: idx.dayofyear)
cycle4b = run5[pdtpst:].between_time('00:00', '00:35').groupby(lambda idx: idx.dayofyear)
  
nrows, ncols = 4, 2
fig = plt.figure(figsize=(6*ncols,3*nrows), constrained_layout=True)
fig.suptitle('Run 5 drain cycle flagging (pink=active, blue=recovery)')
fig.supylabel('LI-COR carbon dioxide data, normalized to 0-1')
fig.supxlabel('Pacific Standard Time (UTC-0800)')
xmajor = 5 # minutes
xminor = 1  # minutes

ax1a = fig.add_subplot(nrows, ncols, 1)
ax1b = fig.add_subplot(nrows, ncols, 2)
ax2a = fig.add_subplot(nrows, ncols, 3)
ax2b = fig.add_subplot(nrows, ncols, 4)
ax3a = fig.add_subplot(nrows, ncols, 5)
ax3b = fig.add_subplot(nrows, ncols, 6)    
ax4a = fig.add_subplot(nrows, ncols, 7)
ax4b = fig.add_subplot(nrows, ncols, 8)

for doy, grp in cycle1a:
    grp.index -= grp.index.floor('D')
    data = grp[colname] / max(grp[colname])
    
    ax1a.plot(data.index, data)
    ax1a.set_title('5:10-5:16 (before 13:00 PST Oct 26th)')
    ax1a.set_xlim(min(data.index).value, max(data.index).value)
    ax1a.yaxis.grid(which='major')
    ax1a.xaxis.grid(which='both')
    ax1a.xaxis.set_major_locator(ticker.MultipleLocator(1e9*60*xmajor))
    ax1a.xaxis.set_minor_locator(ticker.MultipleLocator(1e9*60*xminor))
    ax1a.xaxis.set_major_formatter(lambda x,p: pd.Timestamp(x).strftime('%H:%M'))
    ax1a.axvspan(pd.Timedelta('05:10:00').value, # HINT requires hh:mm:ss format
                 pd.Timedelta('05:16:00').value,
                 alpha=0.5, 
                 color='pink')
    ax1a.axvspan(pd.Timedelta('05:16:00').value,
                 pd.Timedelta('05:22:00').value,
                 alpha=0.8, 
                 color='skyblue')

for doy, grp in cycle1b:
    grp.index -= grp.index.floor('D')
    data = grp[colname] / max(grp[colname])
    
    ax1b.plot(data.index, data)
    ax1b.set_title('6:10-6:16 (after 13:00 PST Oct 26th)')
    ax1b.set_xlim(min(data.index).value, max(data.index).value)
    ax1b.yaxis.grid(which='major')
    ax1b.xaxis.grid(which='both')
    ax1b.xaxis.set_major_locator(ticker.MultipleLocator(1e9*60*xmajor))
    ax1b.xaxis.set_minor_locator(ticker.MultipleLocator(1e9*60*xminor))
    ax1b.xaxis.set_major_formatter(lambda x,p: pd.Timestamp(x).strftime('%H:%M'))
    ax1b.axvspan(pd.Timedelta('06:10:00').value, # HINT requires hh:mm:ss format
                 pd.Timedelta('06:16:00').value,
                 alpha=0.5, 
                 color='pink')
    ax1b.axvspan(pd.Timedelta('06:16:00').value,
                 pd.Timedelta('06:22:00').value,
                 alpha=0.8, 
                 color='skyblue')
    
for doy, grp in cycle2a:
    grp.index -= grp.index.floor('D')
    data = grp[colname] / max(grp[colname])
    
    ax2a.plot(data.index, data)
    ax2a.set_title('11:10-11:16 (before 13:00 PST Oct 26th)')
    ax2a.set_xlim(min(data.index).value, max(data.index).value)
    ax2a.yaxis.grid(which='major')
    ax2a.xaxis.grid(which='both')
    ax2a.xaxis.set_major_locator(ticker.MultipleLocator(1e9*60*xmajor))
    ax2a.xaxis.set_minor_locator(ticker.MultipleLocator(1e9*60*xminor))
    ax2a.xaxis.set_major_formatter(lambda x,p: pd.Timestamp(x).strftime('%H:%M'))
    ax2a.axvspan(pd.Timedelta('11:10:00').value, # HINT requires hh:mm:ss format
                 pd.Timedelta('11:16:00').value,
                 alpha=0.5, 
                 color='pink')
    ax2a.axvspan(pd.Timedelta('11:16:00').value,
                 pd.Timedelta('11:22:00').value,
                 alpha=0.8, 
                 color='skyblue')

#### XXXX this one doesn't plot correctly ###############
for doy, grp in cycle2b:    
    grp.index -= grp.index.floor('D')
    data = grp[colname] / max(grp[colname])
    
    ax2b.plot(data.index, data)
    ax2b.set_title('12:10-12:16 (after 13:00 PST Oct 26th)')
    ax2b.set_xlim(min(data.index).value, max(data.index).value)
    ax2b.yaxis.grid(which='major')
    ax2b.xaxis.grid(which='both')
    ax2b.xaxis.set_major_locator(ticker.MultipleLocator(1e9*60*xmajor))
    ax2b.xaxis.set_minor_locator(ticker.MultipleLocator(1e9*60*xminor))
    ax2b.xaxis.set_major_formatter(lambda x,p: pd.Timestamp(x).strftime('%H:%M'))
    ax2b.axvspan(pd.Timedelta('12:10:00').value, # HINT requires hh:mm:ss format
                 pd.Timedelta('12:16:00').value,
                 alpha=0.5, 
                 color='pink')
    ax2b.axvspan(pd.Timedelta('12:16:00').value,
                 pd.Timedelta('12:22:00').value,
                 alpha=0.8, 
                 color='skyblue')
##########################################################
    
for doy, grp in cycle3a:
    grp.index -= grp.index.floor('D')
    data = grp[colname] / max(grp[colname])
    
    ax3a.plot(data.index, data)
    ax3a.set_title('17:10-17:16 (before 13:00 PST Oct 26th)')
    ax3a.set_xlim(min(data.index).value, max(data.index).value)
    ax3a.yaxis.grid(which='major')
    ax3a.xaxis.grid(which='both')
    ax3a.xaxis.set_major_locator(ticker.MultipleLocator(1e9*60*xmajor))
    ax3a.xaxis.set_minor_locator(ticker.MultipleLocator(1e9*60*xminor))
    ax3a.xaxis.set_major_formatter(lambda x,p: pd.Timestamp(x).strftime('%H:%M'))
    ax3a.axvspan(pd.Timedelta('17:10:00').value, # HINT requires hh:mm:ss format
                  pd.Timedelta('17:16:00').value,
                  alpha=0.5, 
                  color='pink')
    ax3a.axvspan(pd.Timedelta('17:16:00').value,
                  pd.Timedelta('17:22:00').value,
                  alpha=0.8, 
                  color='skyblue')

for doy, grp in cycle3b:
    grp.index -= grp.index.floor('D')
    data = grp[colname] / max(grp[colname])
    
    ax3b.plot(data.index, data)
    ax3b.set_title('18:10-18:16 (after 13:00 PST Oct 26th)')
    ax3b.set_xlim(min(data.index).value, max(data.index).value)
    ax3b.yaxis.grid(which='major')
    ax3b.xaxis.grid(which='both')
    ax3b.xaxis.set_major_locator(ticker.MultipleLocator(1e9*60*xmajor))
    ax3b.xaxis.set_minor_locator(ticker.MultipleLocator(1e9*60*xminor))
    ax3b.xaxis.set_major_formatter(lambda x,p: pd.Timestamp(x).strftime('%H:%M'))
    ax3b.axvspan(pd.Timedelta('18:10:00').value, # HINT requires hh:mm:ss format
                  pd.Timedelta('18:16:00').value,
                  alpha=0.5, 
                  color='pink')
    ax3b.axvspan(pd.Timedelta('18:16:00').value,
                  pd.Timedelta('18:22:00').value,
                  alpha=0.8, 
                  color='skyblue')
    
for doy, grp in cycle4a:
    grp.index -= grp.index.floor('D')
    data = grp[colname] / max(grp[colname])
    
    ax4a.plot(data.index, data)
    ax4a.set_title('23:10-23:16 (before 13:00 PST Oct 26th)')
    ax4a.set_xlim(min(data.index).value, max(data.index).value)
    ax4a.yaxis.grid(which='major')
    ax4a.xaxis.grid(which='both')
    ax4a.xaxis.set_major_locator(ticker.MultipleLocator(1e9*60*xmajor))
    ax4a.xaxis.set_minor_locator(ticker.MultipleLocator(1e9*60*xminor))
    ax4a.xaxis.set_major_formatter(lambda x,p: pd.Timestamp(x).strftime('%H:%M'))
    ax4a.axvspan(pd.Timedelta('23:10:00').value, # HINT requires hh:mm:ss format
                  pd.Timedelta('23:16:00').value,
                  alpha=0.5, 
                  color='pink')
    ax4a.axvspan(pd.Timedelta('23:16:00').value,
                  pd.Timedelta('23:22:00').value,
                  alpha=0.8, 
                  color='skyblue')

for doy, grp in cycle4b:
    grp.index -= grp.index.floor('D')
    data = grp[colname] / max(grp[colname])
    
    ax4b.plot(data.index, data)
    ax4b.set_title('00:10-0:16 (after 13:00 PST Oct 26th)')
    ax4b.set_xlim(min(data.index).value, max(data.index).value)
    ax4b.yaxis.grid(which='major')
    ax4b.xaxis.grid(which='both')
    ax4b.xaxis.set_major_locator(ticker.MultipleLocator(1e9*60*xmajor))
    ax4b.xaxis.set_minor_locator(ticker.MultipleLocator(1e9*60*xminor))
    ax4b.xaxis.set_major_formatter(lambda x,p: pd.Timestamp(x).strftime('%H:%M'))
    ax4b.axvspan(pd.Timedelta('00:10:00').value, # HINT requires hh:mm:ss format
                  pd.Timedelta('00:16:00').value,
                  alpha=0.5, 
                  color='pink')
    ax4b.axvspan(pd.Timedelta('00:16:00').value,
                  pd.Timedelta('00:22:00').value,
                  alpha=0.8, 
                  color='skyblue')

不幸的是,我受到环境的限制,仍然使用旧版本(例如matplotlib 3.4.1、panda 1.2.4、numpy 1.20.2)?

In [25]: pd.show_versions()

INSTALLED VERSIONS
------------------
commit           : 2cb96529396d93b46abab7bbc73a208e708c642e
python           : 3.8.9.final.0
python-bits      : 64
OS               : Windows
OS-release       : 7
Version          : 6.1.7601
machine          : AMD64
processor        : Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : en
LOCALE           : English_United States.1252

pandas           : 1.2.4
numpy            : 1.20.2
pytz             : 2021.1
dateutil         : 2.8.1
pip              : 23.0
setuptools       : 56.0.0
Cython           : 0.29.23
pytest           : 6.2.3
hypothesis       : 6.9.2
sphinx           : 3.5.4
blosc            : 1.10.2
feather          : 0.4.1
xlsxwriter       : 1.3.9
lxml.etree       : 4.6.3
html5lib         : 1.1
pymysql          : None
psycopg2         : None
jinja2           : 2.11.3
IPython          : 7.22.0
pandas_datareader: 0.9.0
bs4              : 4.9.3
bottleneck       : 1.3.2
fsspec           : 0.8.7
fastparquet      : 0.5.0
gcsfs            : None
matplotlib       : 3.4.1
numexpr          : 2.7.3
odfpy            : None
openpyxl         : 3.0.7
pandas_gbq       : None
pyarrow          : 3.0.0
pyxlsb           : None
s3fs             : None
scipy            : 1.6.2
sqlalchemy       : 1.4.8
tables           : 3.6.1
tabulate         : None
xarray           : 0.17.0
xlrd             : None
xlwt             : None
numba            : 0.53.1

单个子地块中缺少网格的更多相关文章

  1. Python数据分析之 Matplotlib 折线图绘制

    这篇文章主要介绍了Python数据分析之 Matplotlib 折线图绘制,在数据分析中,数据可视化也非常重要,下文通过数据分析展开对折线图的绘制,需要的小伙伴可以参考一下

  2. Python利用matplotlib画出漂亮的分析图表

    这篇文章主要介绍了Python利用matplotlib画出漂亮的分析图表,文章首先引入数据集展开详情,需要的朋友可以参考一下

  3. Python matplotlib包和gif包生成gif动画实战对比

    使用matplotlib生成gif动画的方法相信大家应该都看到过,下面这篇文章主要给大家介绍了关于Python matplotlib包和gif包生成gif动画对比的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

  4. Python Matplotlib通过plt.subplots创建子绘图

    这篇文章主要介绍了Python Matplotlib通过plt.subplots创建子绘图,plt.subplots调用后将会产生一个图表和默认网格,与此同时提供一个合理的控制策略布局子绘图,更多相关需要的朋友可以参考下面文章内容

  5. Python数据分析之 Matplotlib 散点图绘制

    这篇文章主要介绍了Python数据分析之 Matplotlib 散点图绘制,散点图又称散点图,是使用多个坐标点的分布反映数据点分布规律、数据关联关系的图表,下文对散点图的详细介绍及绘制,需要的小伙伴可以参考以一下

  6. 详解Python中matplotlib模块的绘图方式

    Matplotlib是Python中最受欢迎的数据可视化软件包之一,它是 Python常用的2D绘图库,同时它也提供了一部分3D绘图接口。本文将详细介绍Matplotlib的绘图方式,需要的可以参考一下

  7. matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小

    在撰写论文时常常会用到matplotlib来绘制三维散点图,下面这篇文章主要给大家介绍了关于matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

  8. Python+matplotlib绘制条形图和直方图

    Matplotlib是Python的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。本文将为大家介绍如何用matplotlib绘制条形图和直方图,感兴趣的朋友可以学习一下

  9. 基于Python matplotlib库绘制箱线图

    这篇文章主要为大家分享了如何利用Python中的matplotlib库实现绘制箱线图与异常值的输出,文中的示例代码讲解详细,需要的可以参考一下

  10. python数据可视化matplotlib绘制折线图示例

    这篇文章主要为大家介绍了python数据可视化matplotlib绘制折线图的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

随机推荐

  1. 如何扩展ATmega324PB微控制器的以下宏寄存器?

    我目前正在学习嵌入式,我有以下练习:展开以下宏寄存器:如果有人解决了这个问题,我将不胜感激,以便将来参考

  2. Python将ONNX运行时设置为返回张量而不是numpy数组

    在python中,我正在加载预定义的模型:然后我加载一些数据并运行它:到目前为止,它仍在正常工作,但我希望它默认返回Tensor列表,而不是numpy数组。我对ONNX和PyTorch都是新手,我觉得这是我在这里缺少的基本内容。这将使转换中的一些开销相同。

  3. 在macOS上的终端中使用Shell查找文件中的单词

    我有一个文本文件,其中有一行:我需要找到ID并将其提取到变量中。我想出了一个RexEx模式:但它似乎对我尝试过的任何东西都不起作用:grep、sed——不管怎样。我的一个尝试是:我为这样一个看似愚蠢的问题感到抱歉,但我在互联网上找不到任何东西:我在SO和SE上读了几十个类似的问题,并在谷歌上搜索了几个教程,但仍然无法找到答案。欢迎提供任何指导!

  4. react-chartjs-2甜甜圈图中只有标题未更新

    我正在使用react-chartjs-2在我的网站中实现甜甜圈图。下面是我用来呈现图表的代码。我将甜甜圈图的详细信息从父组件传递到子组件,所有道具都正确传递。当我在beforeDraw函数外部记录props.title时,它会记录正确的值,但当我在beforeDraw函数内部记录props.title时,它将记录标题的前一个值,从而呈现标题的前值。我在这里做错了什么?

  5. 如何在tkinter中使用Python生成器函数?

    生成器函数承诺使某些代码更易于编写。但我并不总是知道如何使用它们。假设我有一个斐波那契生成器函数fib(),我想要一个显示第一个结果的tkinter应用程序。当我点击“下一步”按钮时,它会显示第二个数字,依此类推。我如何构建应用程序来实现这一点?我可能需要在线程中运行生成器。但如何将其连接回GUI?

  6. 如何为每次提交将存储库历史记录拆分为一行?

    我正在尝试获取存储库的历史记录,但结果仅以单行文本的形式返回给我。

  7. 尝试在颤振项目上初始化Firebase时出错

    当尝试在我的颤振项目上初始化firebase时,我收到了这个错误有人知道我能做什么吗?应用程序分级Gradle插件Gradle项目颤振相关性我已经将firebase设置为Google文档已经在另一个模拟器上尝试过,已经尝试过创建一个全新的模拟器,已经在不同的设备上尝试过了,已经尝试了特定版本的firebase,已经尝试添加但没有任何效果,已经在youtube上看到了关于它的每一个视频,该应用程序在android和iOS两个平台上都抛出了这个错误

  8. 在unix中基于当前日期添加新列

    我试图在unix中基于时间戳列在最后一个单元格中添加一个状态列。我不确定如何继续。

  9. 麦克斯·蒙特利。我一直得到UncaughtReferenceError:当我在终端中写入node-v时,节点未定义

    如果这是您应该知道的,请确认:我已将所有shell更改为默认为zsh。当我在终端中写入node-v时,我一直收到“UncaughtReferenceError:nodeisnotdefined”。但它显示节点已安装。我是个新手,在这方面经验不足。

  10. 如何在前端单击按钮时调用后端中的函数?

    那么如何在后端添加一个新的端点,点击按钮调用这个函数。

返回
顶部