nat*_*142 3 python plot dictionary list
我有一个 netCDF 文件,其中包含可追溯到 1948 年的全球月平均气温。对于作业,我必须选择任何一个提供的数据点,提取其 12 月、1 月、2 月和 3 月的平均温度值,然后显示它。
我已经解压了数据,并将其收集在字典列表中,如下所示:
十二月:
decemberMeans = [
{'year': 1948, 'temp': 271.24}, {'year': 1949, 'temp': 271.28},
{'year': 1950, 'temp': 268.52}, {'year': 1951, 'temp': 269.63},
...,
{'year': 2015, 'temp': 277.23}, {'year': 2016, 'temp': 271.25}
]
Run Code Online (Sandbox Code Playgroud)
对应于一月、二月和三月的数据以相同的方式构建。
我的下一步是绘制它。我必须为每组数据在同一张图上绘制一条线,我正在使用列表理解来完成它。现在我的绘图代码如下所示:
import matplotlib.pyplot as plt
plt.figure(1)
plt.hold(True)
plt.plot([data['years'] for data in decemberMeans], \
[data['temp'] for data in decemberMeans], 'k-')
plt.plot([data['years'] for data in januaryMeans], \
[data['temp'] for data in januaryMeans], 'r-')
plt.plot([data['years'] for data in februaryMeans], \
[data['temp'] for data in februaryMeans], 'b-')
plt.plot([data['years'] for data in marchMeans], \
[data['temp'] for data in marchMeans], 'y-')
plt.grid(True)
plt.show()
plt.close()
Run Code Online (Sandbox Code Playgroud)
它绘制得很好,但我可以看到我所有的列表推导式都是多余的。有没有一种方法可以让我一次性解压缩字典值,这样我就不必data['...'] for data in list为每个集合写两次?
PS - 在我写这篇文章时,我开始意识到我可以编写一个函数来进行绘图(这可能比写这篇文章花费的时间更少),但我仍然很想知道。提前感谢大家!
你可以使用pandas:
import matplotlib.pyplot as plt
import pandas as pd
decemberMeans = [
{'year': 1948, 'temp': 271.24}, {'year': 1949, 'temp': 271.28},
{'year': 1950, 'temp': 268.52}, {'year': 1951, 'temp': 269.63},
{'year': 2015, 'temp': 277.23}, {'year': 2016, 'temp': 271.25}
]
df = pd.DataFrame(decemberMeans)
plt.figure(1)
plt.plot(df['year'], df['temp'], 'k-')
Run Code Online (Sandbox Code Playgroud)