Python 在Matplotlib中创建绘图

Python 在Matplotlib中创建绘图,python,pandas,matplotlib,Python,Pandas,Matplotlib,python新手,正在尝试在matplotlib中创建一些绘图。我的样本数据如下: df = pd.DataFrame( { "Date": ["13/07/2020", "13/07/2020", "13/07/2020", "13/07/2020", "13-07-2020", "13-07-2020", "13-07-

python新手,正在尝试在matplotlib中创建一些绘图。我的样本数据如下:

df = pd.DataFrame(
    {
        "Date": ["13/07/2020", "13/07/2020", "13/07/2020", "13/07/2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "13-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020"],
        "MasterCategory": ["X", "X", "X", "X", "X", "X", "X", "X", "X", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "X", "X", "X", "X", "X", "X", "X", "X", "X", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"],
        "Name": ["sddf", "sdasd", "fdf", "hfh", "rt", "rt", "ter", "ret", "ret", "gh", "fhgf", "r6", "gfh", "etr", "ert", "ery", "yeet", "hfh", "dth", "e", "eryru", "yu", "utyut", "yuy", "uyu", "uyu", "jy", "jyt", "e", "ter", "yeet", "yrt", "y", "yt", "ter", "ytr", "utr", "uru"],
        "SubCategory": ["A", "A", "A", "B", "B", "B", "B", "B", "C", "D", "D", "D", "E", "E", "F", "F", "F", "F", "F", "A", "A", "A", "B", "B", "B", "B", "B", "C", "D", "D", "D", "E", "E", "F", "F", "F", "F", "F"],
        "Age": [24, 35, 23, 34, 5, 56, 65, 44, 64, 24, 35, 23, 34, 5, 56, 65, 44, 64, 45, 21, 19, 34, 34, 3, 40, 48, 37, 70, 20, 35, 23, 34, 5, 56, 65, 44, 64, 45],
        "Exp": [3, 4, 5, 7, 0, 12, 34, 13, 45, 3, 4, 5, 7, 0, 12, 34, 13, 45, 18, 3, 4, 5, 7, 0, 12, 34, 13, 45, 3, 4, 5, 7, 0, 12, 34, 13, 45, 18],
    }
)
我的要求是我想创造尽可能多的数字,每个图形将包含两列子类别的行数。第一个图包含每个子类别的前一周到当前周的名称计数,然后第二个图将包含年龄和经验散点图,色调仅为最近一周的子类别

绘图应该是动态的,因为主类别和子类别可以在适当的时候添加,并且带有年龄和经验的名称可以为现有类别和子类别相加

我一直在尝试编写以下代码,首先动态查找主类别,然后在绘图中查找轴的数量

dfmastercategory = df['MaterCategory'].unique()
dfsubcategory= df['SubCategory'].unique()
for i in dfmastercategory:
print(f'fig{i}, axis=plt.subplot({len(dfsubcategory)},2,figsize=(5,5))')
for i in dfmastercategory:
    for row in range(len(dfsubcategory)):
        for column in range(2):
            print((f'fig{i} , {row} , {column}'))
以上内容至少使我认识到有2个主要类别和6个子类别。下面是我得到的输出

figX, axis=plt.subplot(6,2,figsize=(5,5))
figX , 0 , 0
figX , 0 , 1
figX , 1 , 0
figX , 1 , 1
figX , 2 , 0
figX , 2 , 1
figX , 3 , 0
figX , 3 , 1
figX , 4 , 0
figX , 4 , 1
figX , 5 , 0
figX , 5 , 1
figY , 0 , 0
figY , 0 , 1
figY , 1 , 0
figY , 1 , 1
figY , 2 , 0
figY , 2 , 1
figY , 3 , 0
figY , 3 , 1
figY , 4 , 0
figY , 4 , 1
figY , 5 , 0
figY , 5 , 1
figY, axis=plt.subplot(6,2,figsize=(5,5))
figX , 0 , 0
figX , 0 , 1
figX , 1 , 0
figX , 1 , 1
figX , 2 , 0
figX , 2 , 1
figX , 3 , 0
figX , 3 , 1
figX , 4 , 0
figX , 4 , 1
figX , 5 , 0
figX , 5 , 1
figY , 0 , 0
figY , 0 , 1
figY , 1 , 0
figY , 1 , 1
figY , 2 , 0
figY , 2 , 1
figY , 3 , 0
figY , 3 , 1
figY , 4 , 0
figY , 4 , 1
figY , 5 , 0
figY , 5 , 1
然后,我执行以下操作以生成空白绘图,并得到以下错误:

for i in dfmastercategory:
    print(f'fig{i}, axis=plt.subplot({len(dfsubcategory)},2,figsize=(5,5))')
    for i in dfmastercategory:
        for row in range(len(dfsubcategory)):
            for column in range(2):
                ax[row,column].plot()    


index 2 is out of bounds for axis 0 with size 2

谢谢

我不知道您在何处以及如何定义
ax
,我无法提供更多详细信息,说明您为什么会出现错误。我在没有警告和错误的情况下提出了下面的解决方案

导入matplotlib.pyplot作为plt
作为pd进口熊猫
df=pd.DataFrame(
{
“日期”:[“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7月13日”,“2020年7日”,“2020年7月13日”,“2020年7日”,“2020年7日”,“2020年7月20日”,“2020年7月20日”,“2020年7日”,"20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020", "20-07-2020"],
“主类别”:[“X”、“X”、“X”、“X”、“X”、“X”、“X”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”、“X”、“X”、“X”、“X”、“X”、“X”、“X”、“X”、“Y”、“Y”、“Y”、“Y”、“Y”、“Y”],
“名称”:[“sddf”、“SDSD”、“fdf”、“hfh”、“rt”、“rt”、“ter”、“ret”、“ret”、“gh”、“fhgf”、“r6”、“gfh”、“etr”、“ert”、“ery”、“YET”、“hfh”、“dth”、“e”、“ERYU”、“yu”、“uyu”、“uyu”、“jy”、“jyt”、“e”、“ter”、“YET”、“yrt”、“y”、“yt”、“yt”、“ter”、“ytr”、“utr”、“uru”],
“子类别”:[“A”、“A”、“A”、“B”、“B”、“B”、“C”、“D”、“D”、“E”、“E”、“F”、“F”、“F”、“F”、“A”、“A”、“B”、“B”、“C”、“D”、“D”、“E”、“F”、“F”、“F”、“F”、“F”、“F”、“F”、“F”、“F”、“B”、“B”、“B”、“C”、“D”、“D”、“E”、“F”、“F”、“F”],
“年龄”:[24,35,23,34,5,56,65,44,64,24,35,23,34,5,56,65,44,64,45,21,19,34,34,3,40,48,37,70,20,35,23,34,5,56,65,44,45],
“经验”:[3,4,5,7,0,12,34,13,45,3,4,5,7,0,12,34,13,45,18,3,4,5,7,0,12,34,13,45,3,4,5,7,0,12,34,45],
}
)
dfmastercategory=df['MasterCategory'].unique()
dfsubcategory=df['SubCategory'].unique()
对于DFMaster类别中的i:
打印(f'fig{i},axis=plt.subplot({len(dfsubcategory)},2,figsize=(5,5)))
对于DFMaster类别中的i:
图,轴=plt.子批次(nrows=len(dfsubcategory),ncols=2,figsize=(5,5))
对于范围(len(dfsubcategory))中的行:
对于范围(2)中的列:
打印((f'fig{i},{row},{column}'))
轴[行,列]。设置标题(dfsubcategory[行])
轴[行,列].plot()
图1紧_布局图()
图2(图3)
注意:您的代码中有一些拼写错误

  • df['MaterCategory']中的MaterCategory。unique()
    应为MasterCategory
  • plt.subplot()
    fig{i}中,axis=plt.subplot({len(dfsubcategory)},2,figsize=(5,5))
    应该是
    plt.subplot()

主持人您好。我已经搜索了解决方案,但没有遇到相同的情况。如果可以打开相同的解决方案以获得建议/指导,我将不胜感激。有人对此有任何建议吗?感谢您的回复。我正在编写另一份报告,并将很快就此与您联系。很抱歉,我的回复太晚了不希望有人回应。