如何在 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 列的绘图网格。
参考:
我绘制了 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 列的绘图网格。
参考: