首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示每一行的子图

如何显示每一行的子图
EN

Stack Overflow用户
提问于 2022-07-18 15:13:56
回答 2查看 107关注 0票数 0

目前有一个问题,让我的所有数据显示在我的子图上。我试图用geodataframes绘制一个7行6列的子图。就是其中一个geodataframes的样子(它们看起来都一样)。

我的数据如下:

代码语言:javascript
复制
# what I want to label the y axis for each row
ylab = ['mean_ensemble',
'mean_disalexi',
'mean_eemetric',
'mean_geesebal',
'mean_ptjpl',
'mean_ssebop',
'mean_sims']

# the years I want to plot and what the name of each column in the geodataframes are
years = ['2016', '2017', '2018', '2019', '2020', '2021']

# the 7 geodataframes
graph = [mean_ensemble,
mean_disalexi,
mean_eemetric,
mean_geesebal,
mean_ptjpl,
mean_ssebop,
mean_sims]

f, ax = plt.subplots(nrows = 7, ncols = 6, figsize = (12, 12))

ax = ax.flatten()

i=0

for y, col in enumerate(years):
    graph[i].plot(column=col, ax=ax[y], legend=True, cmap='Blues')
    ax[y].axis('off')
    plt.title(str(y))
    i+=1

plt.show()

这就是我最后的下场。

我还想要一个标题的整体子图,说“平均ET数据的SD-6地区”。我不知道我是不是错过了什么,所以我会很感激你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2022-07-18 15:32:38

我认为您需要另一个循环来遍历行和列。没有数据集很难准确地复制,但我建议如下所示:

代码语言:javascript
复制
f, axs = plt.subplots(nrows=7, ncols=6, figsize = (12, 12))

for i in range(7):
    for j in range(6):
        graph[i].plot(column=years[j], ax=axs[i,j], legend=True, cmap='Blues')
        axs[i,j].axis('off')
        if i == 0:
            axs[i,j].set_title(ylab[j])
票数 0
EN

Stack Overflow用户

发布于 2022-07-20 16:57:25

我玩了@falafelocelot数据,它起作用了!这是我的最后代码:

代码语言:javascript
复制
# Create lists that the figure can iterate through when plotting
years = ['2016', '2017', '2018', '2019', '2020', '2021']
mean_et_list = [mean_ensemble, mean_disalexi, mean_eemetric, mean_geesebal, mean_ptjpl, mean_ssebop, mean_sims] # separated geodataframes
ylab = ['Ensemble', 'DisALEXI', 'eeMetric', 'geeSEBAL', 'PT-JPL', 'SSEBop', 'SIMS']

# Create figure and set axes
fig, axs = plt.subplots(nrows = 7, ncols = 6, figsize = (12, 12))

# Create for loop to iterate through rows and columns
rows = 7
cols = 6
for r in range(rows):
    for c in range(cols):
        mean_et_list[r].plot(years[c], ax=axs[r,c], legend=True, cmap='Blues')
        boundary.plot(ax=axs[r,c], edgecolor='black', color='white', alpha=0.3)
        buffer.plot(ax=axs[r,c], edgecolor='black', color='white', alpha=0.3)
        axs[r,c].patch.set_facecolor('white')
        axs[r,c].set_xticks([]) # remove tick marks 
        axs[r,c].set_xticklabels([]) # remove tick mark labels
        axs[r,c].set_yticks([])
        axs[r,c].set_yticklabels([])
        axs[r,c].spines['top'].set_visible(False) # remove border around plot
        axs[r,c].spines['right'].set_visible(False)
        axs[r,c].spines['bottom'].set_visible(False)
        axs[r,c].spines['left'].set_visible(False)
        if c == 0:
            axs[r,c].set_ylabel(ylab[r]) # set y-labels for first column
        if r == 0:
            axs[r,c].set_title(years[c]) # set year titles for each column

fig.suptitle('Annual Mean ET for SD-6', y=0.93)
fig.patch.set_facecolor('white')
os.chdir('C:\\Users\\ashle\\Desktop\\KGS\eggs\\')
plt.savefig('AnnualMeanETSD6.png')
plt.show()

这是我最后的计划

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73024647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档