【发布时间】:2015-12-20 11:59:00
【问题描述】:
我正在尝试根据 pandas 数据框中的数据绘制一个带有多个箱线图的面板图。数据框的列如下所示:
data.columns
Index([u'SiteId', u'obs1', u'obs2', u'obs3', u'obs4', u'obs5', u'obs6', u'date', u'area']
我想创建一个包含 9 个不同地块的面板(因为有 9 个不同的地理区域),每个地块在一年中的每个月都有 12 个箱形图。下面显示了一个示例,其中 sn-p 用于创建绘图:
df = data.ix[:, ['obs1','date', 'area']]
df = df.set_index('date')
colm = ['LOCATION 1']
for area in areas:
df2 = df.loc[(df.area== area)]
df2.boxplot(column=colm, by=df2.index.month, showmeans=True)
上面的代码只生成一个图(图中每个月对应的箱线图),但我想创建 9 个这样的图,每个图对应于特定区域作为同一图中的子图。换句话说,我想首先按区域对数据进行分组,然后按一年中的月份对数据进行分组,然后将结果绘制为箱线图。有什么想法可以得到想要的情节吗?任何帮助表示赞赏。
另外,我怎样才能摆脱“按 [1 1 1 ...12 12 12] 分组的箱线图”和“1,1,1,1,1,1,1,1,1,.. ...”在情节的顶部和底部?
我不能发布图片,因为 stackoverflow 规则不允许我这样做。 谢谢。
【问题讨论】:
-
如果您可以提供一个带有假数据的简单数据框来玩弄,那将很有用。我怀疑您的 9 个数字确实是生成的,但是每个数字都被下一个数字覆盖。您可以尝试在 for 循环中创建一个新图形,您应该得到 9 个不同的图形。如果你想在同一个图中绘制所有 9 个区域,你应该创建一个 9x12 的子图并在你的 for 循环中的相关轴上绘制
-
谢谢 Diziet,我试过了,但它不起作用。下面是样本数据(虽然只是几天但日期涵盖了全年,并且有9个这样的区域)。 :2011-01-21 85.330990 5 2011-01-18 85.330990 5 2011-01-21 85.63021267 2011-01-24 7.944901/11-01-01-20 30 56.947048 3 2011-01-03 89.431410 6 2011-01-06 7.979408 6
标签: python pandas matplotlib