简体   繁体   English

如何为每个子图添加标题

[英]How to add title to each subplot

I want to add title for each subplot.我想为每个子图添加标题。 I want to assign a separate title to each subplot from a list of title in same sequence.我想从相同顺序的标题列表中为每个子图分配一个单独的标题。

title_list = ['Table1', 'Table2',, 'Table3', 'Table4', 'Table5, 'Table6'] title_list = ['Table1', 'Table2',, 'Table3', 'Table4', 'Table5, 'Table6']

Hence assign title for df1 as 'Table1', df2 as 'Table2'.. and so on.因此,将 df1 的标题指定为“Table1”,将 df2 指定为“Table2”......等等。

My Code as below:我的代码如下:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# dataframe sample data
df1 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df2 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df3 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df4 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df5 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df6 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])

#define number of rows and columns for subplots
nrow=3
ncol=2

# make a list of all dataframes 
df_list = [df1 ,df2, df3, df4, df5, df6]
fig, axes = plt.subplots(nrow, ncol)

# plot counter
count=0
for r in range(nrow):
    for c in range(ncol):
        df_list[count].plot(ax=axes[r,c])
        count+=1

You can use the method set_title() on the axis object:您可以在轴 object 上使用方法set_title()

axes[r, c].set_title(f"This is row={r} and column={c}")

I also added a call fig.tight_layout() to fix the spacing between subplots.我还添加了一个调用fig.tight_layout()来修复子图之间的间距。

绘制示例代码的输出

The complete code:完整代码:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# dataframe sample data
df1 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df2 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df3 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df4 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df5 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df6 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])

#define number of rows and columns for subplots
nrow=3
ncol=2

# make a list of all dataframes 
df_list = [df1 ,df2, df3, df4, df5, df6]
fig, axes = plt.subplots(nrow, ncol)

# plot counter
count=0
for r in range(nrow):
    for c in range(ncol):
        df_list[count].plot(ax=axes[r,c])
        count+=1
        axes[r, c].set_title(f"This is row={r} and column={c}")
        
fig.tight_layout()

Note that you can simplify the creation of your sample data:请注意,您可以简化示例数据的创建:

# dataframe sample data
df_list = [pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
           for _ in range(nrow * ncol)]

Add ax.set_title like below添加ax.set_title如下

for r in range(nrow):
    for c in range(ncol):
        axes[r,c].set_title(title_list[(r*c) + c])
        df_list[count].plot(ax=axes[r,c])
        count+=1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM