首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的单个图形中的多个框图

Python中的单个图形中的多个框图
EN

Stack Overflow用户
提问于 2022-01-17 23:40:38
回答 1查看 1.7K关注 0票数 0

我是Python的初学者。

在我的实习项目中,我试图用csv中包含的数据来绘制博客情节。

我需要为上面显示的4(4)个变量(AAG、DENS、SRG e RCG)中的每一个绘制博客图。由于每个变量在001到100的范围内呈现值​​,因此每个变量将有100个方格图,需要在一个图形中绘制,如图像所示。

这是我需要绘制的图形,但是对于每个变量,将有100个bloxplots,因为每个变量都有100个值列:

X轴是“年份”,从2025年到2030年不等,所以我需要一个图,如图2中所示的每年,y轴是每个变量的值​​的集合。

使用Pandas-melt函数和seaborn库,我只能绘制列的框图。但这不是我想要的

代码语言:javascript
复制
import pandas as pd
import seaborn as sns
 
df = pd.read_csv("2DBM_50x50_Central_Aug21_Sim.cliped.csv")
mdf= df.melt(id_vars=['Year'], value_vars='AAG[001]')
print(mdf)
ax=sns.boxplot(x='Year', y='value',width = 0.2, data=mdf)

上述守则的结果:

我有什么办法解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2022-01-18 16:40:50

下面的代码给出五个子图,其中每个子图只包含一个变量的数据。然后每年生成一个盒子图。若要更改每个变量使用的列范围,请更改var_range = range(1, 101)中的上限,并查看异常值将showfliers更改为True

代码语言:javascript
复制
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

df = pd.read_csv("2DBM_50x50_Central_Aug21_Sim.cliped.csv")

variables = ["AAG", "DENS", "SRG", "RCG", "Thick"]
period = range(2025, 2031)
var_range = range(1, 101)

fig, axes = plt.subplots(2, 3)
flattened_axes = fig.axes
flattened_axes[-1].set_visible(False)

for i, var in enumerate(variables):
    var_columns = [f"TB_acc_{var}[{j:05}]" for j in var_range]
    data = df.melt(id_vars=["Period"], value_vars=var_columns, value_name=var)
    ax = flattened_axes[i]
    sns.boxplot(x="Period", y=var, width=0.2, data=data, ax=ax, showfliers=False)

plt.tight_layout()
plt.show()

产出:

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

https://stackoverflow.com/questions/70748749

复制
相关文章

相似问题

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