【发布时间】:2021-12-27 08:47:34
【问题描述】:
我想使用 matplotlib 和 pandas 绘制堆积条形图。下面的代码很好地绘制了条形图。但是当我将 a、b、c、d、e、f、g、h ..etc 更改为 1 月、2 月...它不会绘制相同的图表。它只绘制字母顺序。无论如何可以克服这个问题。
import pandas as pd
import matplotlib.pyplot as plt
years=["2016","2017","2018","2019","2020", "2021"]
dataavail={
"a":[20,0,0,0,10,21],
"b":[20,13,10,18,15,45],
"c":[20,20,10,15,18,78],
"d":[20,20,10,15,18,75],
"e":[20,20,10,15,18,78],
"f":[20,20,10,15,18,78],
"g":[20,20,10,15,18,78],
"h":[20,20,10,15,18,78],
"i":[20,20,10,15,18,78],
"j":[20,20,10,15,18,78],
"k":[20,20,10,15,18,78],
"l":[20,20,0,0,0,20],
}
df=pd.DataFrame(dataavail,index=years)
df.plot(kind="bar",stacked=True,figsize=(10,8))
plt.legend(loc="centre",bbox_to_anchor=(0.8,1.0))
plt.show()
但是当我将 a,b,c...部分中的代码更改为 January,February...
将熊猫导入为 pd 将 matplotlib.pyplot 导入为 plt
years=["2016","2017","2018","2019","2020", "2021"]
dataavail={
"january":[20,0,0,0,10,21],
"February":[20,13,10,18,15,45],
"March":[20,20,10,15,18,78],
"April":[20,20,10,15,18,75],
"may":[20,20,10,15,18,78],
"June":[20,20,10,15,18,78],
"July":[20,20,10,15,18,78],
"August":[20,20,10,15,18,78],
"September":[20,20,10,15,18,78],
"October":[20,20,10,15,18,78],
"November":[20,20,10,15,18,78],
"December":[20,20,0,0,0,20],
}
df=pd.DataFrame(dataavail,index=years)
df.plot(kind="bar",stacked=True,figsize=(10,8))
plt.legend(loc="centre",bbox_to_anchor=(0.8,1.0))
plt.show()
【问题讨论】:
-
dict不能保证保留其条目的顺序,请尝试使用OrderedDict -
你能建议如何实现orderedDict @AJBiffl
-
@AJBiffl 你用的是哪个 Python
-
先生它的python 3.7
标签: pandas matplotlib bar-chart ordereddictionary