【发布时间】:2022-01-17 23:40:38
【问题描述】:
我是 Python 初学者。
在我的实习项目中,我试图从 csv 中包含的数据中绘制 bloxplots
我需要为上面显示的 4(四个)变量(AAG、DENS、SRG 和 RCG)中的每一个绘制 bloxplot。由于每个变量呈现的值都在[001]到[100]的范围内,所以每个变量会有100个箱线图,需要绘制在一个图中,如图所示。
这是我需要绘制的图表,但对于每个变量将有 100 个 bloxplots,因为每个变量都有 100 列值:
x 轴是“年”,范围从 2025 年到 2030 年,所以我需要一个类似于图 2 所示的图表,y 轴是每年的值集每个变量。
使用Pandas-melt 函数和seaborn 库,我只能绘制列的箱线图。但这不是我需要的:
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)
以上代码的结果:
我可以尝试什么来解决这个问题?
【问题讨论】:
-
如何为 100 列单独绘制箱线图,并将
Year设置为 x 轴?您的每一列都跨度从 2025 年到 2030 年。 -
This plot 是您从每个变量的前 24 列中得到的。在这个图中,
AAG变量的最左边的箱线图是TB_acc_AAG[00001],第二个是TB_acc_AAG[00002],依此类推。但 x 轴实际上并不是Year,因为它只有六个值。 -
在原始文件中,每个变量的所有 100 列数据都有每年的值(从 2025 到 3030),即按 2025 年过滤“期间”列时,我将有一个过滤数据集,指的是 2025 年,其他年份也是如此。
-
每个按年份过滤的数据集将用于制作一个像这样的图表:(i.stack.imgur.com/X0hZM.png) [每个图表将有 5 个不同的图,每个变量一个图(AAG、DENS、SRG、RCG和厚)具有各自的 100 个箱线图,因为每个变量有 100 列]。该图的 x 轴是年份(过滤的年份),y 轴是指今年的数据。因此,我需要 6 个图表(每年一个)。
-
感谢您的回复!
标签: python pandas matplotlib seaborn boxplot