Python for loop matplotlib条形图未显示所有数据
我有一个字典,每个键代表一年,每个值代表该年某个领域的降雨异常Python for loop matplotlib条形图未显示所有数据,python,matplotlib,Python,Matplotlib,我有一个字典,每个键代表一年,每个值代表该年某个领域的降雨异常 anoms_yearly.keys() dict_keys([1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
anoms_yearly.keys()
dict_keys([1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019])
每个键、值对只是一个xarray数据数组,它具有值和值的时间
anoms_yearly[1980].values
array(-3.49641086)
现在,我尝试在一个简单的条形图中绘制数据
fig,ax=plt.subplots(figsize=(20,12))
for i in anoms_yearly.keys():
if anoms_yearly[i].values<0:
colors='brown'
else:
colors='green'
ax.bar(anoms_yearly[i]['time'], anoms_yearly[i].values, color=colors)
fig,ax=plt.子批次(figsize=(20,12))
因为我每年都在anoms_.keys():
如果anoms_yearly[i].values我有点困惑,在绘图函数中如何处理字典中的键和条目。
让我们创建一个最低限度的工作示例:
导入matplotlib.pyplot作为plt
随机输入
D=dict()
对于范围内的i(19002000):
D[str(i)]=random.random()-0.5
字典D
包含1900-1999年的年份,以字符串作为键,以-0.5
和0.5
之间的随机数作为对应值
你可以像以前那样循环浏览字典的键。但是,如果你想访问它,只需调用字典的关键。无需进行此类索引和调用.values()
和.keys()
。见:
fig,ax=plt.subplot()
对于D.keys()中的键:
如果D[键]<0:
“棕色”
其他:
“绿色”
ax.条(键,D[键],颜色=颜色)
XTick现在变得一团糟,因为它们是字符串,python/matplotlib不知道它们是有序的,可以分组
无论如何,我猜你奇怪的输出来自奇怪的索引anoms_year[I]['time']
,坦率地说,我不明白你为什么要用键对它进行索引(在这种情况下,D[key]
并用time
再次对返回进行索引,就好像会返回另一本词典一样……)我不是Python字典方面的专家,但为什么不将字典转换为数组或数据帧(更多信息)