【问题标题】:Multiple dictionaries re-structured for matplotlib plot为 matplotlib 绘图重新构建了多个字典
【发布时间】:2016-03-17 23:44:23
【问题描述】:

我最近一直在使用PyNE library 模拟复杂材料的放射性衰变。除其他外,该库允许您将任意材料定义为字典,将其衰减到时间 t,然后它将返回一个新材料作为字典,其中包含当时存在的物种及其浓度。对于一次性操作来说,这很简单。但是,如果您想多次重复该过程(衰减),您最终会得到几个字典。这些字典中的数据显示了放射性物质如何随时间演化(衰变)。

这很好,但是,我真正想做的是将每个物种绘制为时间的函数。但是,matplotlib plot 不接受多个字典作为输入数据。

我的问题是,我怎样才能以 python 的方式重新排列多个字典,以显示每个物种随时间的演变,以 matplotlib 绘图可以接受的格式?

让我举个例子。假设我的初始材料在 T0 定义,由三个物种组成,每个物种的数量为 1.0。我最初的字典看起来像:

T0 = {A:1.0, B:1.0, C:1.0}

现在假设我将这种材料衰减到 T1,新材料可能是。

T1 = {A:1.0, B:0.35, C:1.0, D:0.75}

我们可以看到物种 B 已经腐烂产生了 D,但 A 和 C 没有。

现在让我们再次衰减到 T2

T2 = {A:0.9, C:0.8, D:1.0, E:0.1, F:0.2}

这一次物种 B 已经完全衰变为 D,而 A 和 C 已经开始衰变为 E 和 F。

现在显然我只展示了三个简单的案例。实际上,将有数百个词典,可能有数十个物种。在示例中,我想将 A、B、C、D、E 绘制为时间的函数。由于数据在每个时间步定义的单独字典中,Matplotlib plot 不会将其作为输入参数。我需要的是将所有 A 数据组合在一起并根据时间绘制,将所有 B 数据组合在一起并根据时间绘制等等......

我的第一个想法是附加到一个二维列表,其中基本上列是时间,行是物种。当提取到向量中时,这些可以很容易地绘制出来。但是我认为这对于出现在中途的物种来说可能很困难,例如上面的 D、E、F。您需要将它们设置为零,如下所示:

list = [['Time', T0, T1, T2],
['A', 1.0, 1.0, 0.9],
['B', 1.0, 0.35, 0.9],
['C', 1.0, 1.0, 0.8],
['D', 0.0, 0.0, 0.9],
['E, 0.0, 0.0, 0.9]]

任何关于如何以简洁的 Python 方式将这些字典操作成易于绘制的东西的想法将不胜感激。

标记

【问题讨论】:

    标签: python python-2.7 dictionary matplotlib


    【解决方案1】:

    我想你想要 pandas DataFrame,它设计用于处理标记数据的 2D 数组,具有自动对齐和方便处理缺失数据和 matplotlib 集成的功能。

    http://pandas.pydata.org/

    T0 = {'A':1.0, 'B':1.0, 'C':1.0}
    T1 = {'A':1.0, 'B':0.35, 'C':1.0, 'D':0.75}
    T2 = {'A':0.9, 'C':0.8, 'D':1.0, 'E':0.1, 'F':0.2}
    T3 = {'C':0.6, 'D':0.8, 'E':0.1, 'F':0.2}
    
    df = pd.DataFrame([T0, T1, T2, T3]).fillna(0)
    print(df)
    
         A     B    C     D    E    F
    0  1.0  1.00  1.0  0.00  0.0  0.0
    1  1.0  0.35  1.0  0.75  0.0  0.0
    2  0.9  0.00  0.8  1.00  0.1  0.2
    3  0.0  0.00  0.6  0.80  0.1  0.2
    
    df.plot(style='o-')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 2023-03-27
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多