如何在 Python 中的同一页上绘制不同的图?

How to plot different plots on same page in Python?

我绘制了 10 个图,但它们以不同的方式显示 windows 但我想在同一页或几页内绘制下降大小的单独图的网格。

重现我的情况的代码是:

matrix=np.random.randint(0,100,(50,10))
df=pd.DataFrame(matrix)
df.columns=['a','b','c','d','e','f','g','h','i','j']


f=pd.DataFrame(np.random.randint(0,100,(50,1)))
f.columns=['f']

for i in range(len(df.columns)):
    plt.scatter(df.iloc[:,i],f)
    plt.show()

所需的输出应类似于:

这会为您提供实现目标的线索吗?

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

matrix = np.random.randint(0,100,(50,10))
df = pd.DataFrame(matrix)
df.columns = ['a','b','c','d','e','f','g','h','i','j']
f = pd.DataFrame(np.random.randint(0,100,(50,1)))
f.columns = ['f']
fig,axs = plt.subplots(2,2)

axs[0,0].scatter(df.iloc[:,0],f)
axs[0,1].scatter(df.iloc[:,1],f)
axs[1,0].scatter(df.iloc[:,2],f)
axs[1,1].scatter(df.iloc[:,3],f)

plt.show()

输出:


循环更新:

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

matrix = np.random.randint(0,100,(50,10))
df = pd.DataFrame(matrix)
df.columns = ['a','b','c','d','e','f','g','h','i','j']
f = pd.DataFrame(np.random.randint(0,100,(50,1)))
f.columns = ['f']

fig,axs = plt.subplots(2,2)

i = 0
for a in axs:
    for b in a:
        ax[a,b].scatter(df.iloc[:,i],f)
        i += 1

plt.show()

您需要为此使用 plt.subplot()Documentation

使用子图,您可以将多个图放在一个图中:

import matplotlib.pyplot as plt

# Arguments to subplot are (# rows, # cols, index in grid)
plt.subplot(1, 2, 1)
# Modify left plot here
plt.title("Left Plot")
plt.text(0.4, 0.4, "1", fontsize=50)

plt.subplot(1, 2, 2)
# Modify right plot here
plt.title("Right Plot")
plt.text(0.4, 0.4, "2", fontsize=50)

plt.show()

这段代码产生:

只需将参数中的前两位数字更改为subplot即可增加网格中的行数和列数。

对于包含 10 个地块的应用程序,您可以这样做:

# Increase figure size so plots are big
plt.figure(figsize=(10, 40))

for i in range(len(df.columns)):
    plt.subplot(5, 2, i+1)
    plt.scatter(df.iloc[:,i],f)

plt.show()

这将创建一个包含 5 行和 2 列的绘图网格。

参考: