使用 for 循环创建子图 Pandas Python

Creating subplots with a for loop Pandas Python

我想在下面创建 3 个子图,子图的坐标在 for 循环参数中指定为 add_plotadd_plot的格式为nrows, ncols ,cells。但是当我尝试实现它时出现错误。如何修改 Graphing() 中 for 循环的内容来实现此目的?

错误:

ValueError: Single argument to subplot must be a three-digit integer, not (2, 2, 1)

代码:

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

data = pd.DataFrame({'col1': [4, 5, 2, 2, 3, 5, 1, 1, 6], 'col2': [6, 2, 1, 7, 3, 5, 3, 3, 9], 
     'label':['Old','Old','Old','Old','Old','Old','Old','Old','Old'],
     'date': ['2022-01-24 10:07:02', '2022-01-27 01:55:03', '2022-01-30 19:09:03', '2022-02-02 14:34:06',
              '2022-02-08 12:37:03', '2022-02-10 03:07:02', '2022-02-10 14:02:03', '2022-02-11 00:32:25',
              '2022-02-12 21:42:03']})

def Graphing():
    #Size of the figure 
    fig = plt.figure(figsize=(12, 7))

    #Creating the dataframe 
    df = pd.DataFrame({
                      'date' : datetime, 
                      'col1': data['col1']
    })
    
    for subplot_,add_plot in (zip(
                         ['sub1','sub2','sub3'],
                         [(2,2,1), (2,2,1), (2,1,2)])): 
        subplot_ = fig.add_subplot(add_plot)
        
    # Show Graph 
    plt.show()

Graphing()

这仍然会引发 NameError: name 'datetime' is not defined,因为您没有在代码中定义 datetime,但不应引发任何子图错误。

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

data = pd.DataFrame({'col1': [4, 5, 2, 2, 3, 5, 1, 1, 6], 'col2': [6, 2, 1, 7, 3, 5, 3, 3, 9], 
     'label':['Old','Old','Old','Old','Old','Old','Old','Old','Old'],
     'date': ['2022-01-24 10:07:02', '2022-01-27 01:55:03', '2022-01-30 19:09:03', '2022-02-02 14:34:06',
              '2022-02-08 12:37:03', '2022-02-10 03:07:02', '2022-02-10 14:02:03', '2022-02-11 00:32:25',
              '2022-02-12 21:42:03']})

def Graphing():
    #Size of the figure 
    fig = plt.figure(figsize=(12, 7))

    #Creating the dataframe 
    df = pd.DataFrame({
                      'date' : datetime, 
                      'col1': data['col1']
    })
    
    for subplot_,add_plot in (zip(
                         ['sub1','sub2','sub3'],
                         [(2,2,1), (2,2,1), (2,1,2)])): 
        subplot_ = fig.add_subplot(*add_plot)
        
    # Show Graph 
    plt.show()

Graphing()