Python 热生成动态子批(代码优化)

Python 热生成动态子批(代码优化),python,pandas,Python,Pandas,我正在用子地块绘制一个数字。子批次的数量是动态的,取决于df.shape 这是工作,但我不满意。我有3个问题: 1) 可以优化绘图部分吗如果k==b有点烦人 2) 如何删除最后3个空子批次 3) 我正在考虑制作一个静态图形(大小=4,4),并在图形满后打开一个新图形。我怎样才能意识到这一点 import numpy as np import pandas as pd import matplotlib.pyplot as plt import math import string import

我正在用子地块绘制一个数字。子批次的数量是动态的,取决于
df.shape

这是工作,但我不满意。我有3个问题:

1) 可以优化绘图部分吗<代码>如果k==b有点烦人

2) 如何删除最后3个空子批次

3) 我正在考虑制作一个静态图形(大小=4,4),并在图形满后打开一个新图形。我怎样才能意识到这一点

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

import string
import random

# got generator from here: 
# https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits

def id_generator(size=4, chars=string.ascii_uppercase + string.digits):
    return ''.join(random.choice(chars) for _ in range(size))

#%% make random data
labels = []
for i in range(0,27):
    labels.append(id_generator())

mat = np.random.rand(20,27)
df = pd.DataFrame(mat,columns=labels)

#%% plot
k = 0 #go left
l=0 #go down
b = 5 #static number for columns
a = math.ceil(len(labels)/5) #round up for 'go down'
fig, axs = plt.subplots(
    a,b, figsize=(10, 10),sharex=True, constrained_layout=True
)
for j in labels:
    axs[l,k].plot(df[j])
    k+=1
    if k == b:
        k = 0
        l+=1
编辑: 在Chris A的帮助下,上述3个问题得以解决

我发现了如何更改xlabel、xlim和标题。 是否可以将图例的位置更改为左上角? 在列表中找不到任何内容,我如何才能提交一份带有标签的列表

df.index.name = 'xlabel'
fig = df.plot(subplots=True, title= 'Make title',y=labels,layout=(-1, 5), figsize=(10, 10),grid=True,xlim=[0,20]) #xticks=[0,5,10,15,20]

您可以尝试
DataFrame.plot
方法的
layout
参数。您可以为其中一个维度传入
-1
,它将动态工作。例如
df.plot(subplot=True,layout=(-1,5),figsize=(10,10))
哇,谢谢。一行用于所有绘图:D,但我还需要设置标签、刻度和所有内容。也许我需要使用matplotlib来处理布局。您如何更改标签?在小示例中没有添加它们。我将检查您的命令并尝试:)谢谢