使用 OrderedDict 但在图表月份中出现乱序
Using OrderedDict but in graph months out of order
我有一个 pivot_table 被读入使用散景的条形图。问题是月份是乱序绘制的,即使我使用的是 OrderedDict。这是 pivot_table
的示例
pivot_table.head(3)
Out[45]:
Month 1 2 3 4 5 6 7 8 9 10 11 CompanyName
Company1 17 30 29 39 15 26 24 12 36 21 18
Company2 4 11 13 22 35 29 15 18 29 31 17
Company3 11 8 25 24 7 15 20 0 21 12 12
Month 12
CompanyName
Company1 15
Company2 14
Company3 17
正在使用此代码读取它:
# get the months
Jan = pivot_table[1].astype(float).values
Feb = pivot_table[2].astype(float).values
Mar = pivot_table[3].astype(float).values
Apr = pivot_table[4].astype(float).values
May = pivot_table[5].astype(float).values
Jun = pivot_table[6].astype(float).values
Jul = pivot_table[7].astype(float).values
Aug = pivot_table[8].astype(float).values
Sep = pivot_table[9].astype(float).values
Oct = pivot_table[10].astype(float).values
Nov = pivot_table[11].astype(float).values
Dec = pivot_table[12].astype(float).values
# build a dict containing the grouped data
months = OrderedDict(Jan=Jan, Feb=Feb, Mar=Mar, Apr=Apr, May=May,Jun=Jun,Jul=Jul,Aug=Aug,Sep=Sep,Oct=Oct,Nov=Nov,Dec=Dec)
palette = brewer["PuBuGn"][8]
output_file("stacked_bar.html")
bar = Bar(months, Companies, title="Stacked bars", palette = palette, legend = "top_right", width = 1200, height=900, stacked=True)
show(bar)
问题是这是输出。虽美,月无序。我希望他们从 1 月开始,一直到 12 月。
问题是参数由 OrderedDict 收集为字典 (kwargs),它没有排序。
改为这样做:
months = OrderedDict()
months['Jan'] = pivot_table[1].astype(float).values
months['Feb'] = pivot_table[2].astype(float).values
...
您可以像这样使用 OrderedDict:
months = OrderedDict([('Jan', Jan), ('Feb', Feb), ('Mar', Mar)])
或者:
months = OrderedDict()
months['Jan'] = Jan
months['Feb'] = Feb
months['Mar'] = Mar
OrderedDict 是一种字典,它会记住键的首次插入顺序。字典 (kwargs) 没有指定的顺序。
这几个月试试这个,
months = OrderedDict((
("Jan",Jan)
,("Feb",Feb)
,("Mar",Mar)
,("Apr",Apr)
,("May",May)
,("Jun",Jun)
,("Jul",Jul)
,("Aug",Aug)
,("Sep",Sep)
,("Oct",Oct)
,("Nov",Nov)
,("Dec",Dec)))
我有一个 pivot_table 被读入使用散景的条形图。问题是月份是乱序绘制的,即使我使用的是 OrderedDict。这是 pivot_table
的示例pivot_table.head(3)
Out[45]:
Month 1 2 3 4 5 6 7 8 9 10 11 CompanyName
Company1 17 30 29 39 15 26 24 12 36 21 18
Company2 4 11 13 22 35 29 15 18 29 31 17
Company3 11 8 25 24 7 15 20 0 21 12 12
Month 12
CompanyName
Company1 15
Company2 14
Company3 17
正在使用此代码读取它:
# get the months
Jan = pivot_table[1].astype(float).values
Feb = pivot_table[2].astype(float).values
Mar = pivot_table[3].astype(float).values
Apr = pivot_table[4].astype(float).values
May = pivot_table[5].astype(float).values
Jun = pivot_table[6].astype(float).values
Jul = pivot_table[7].astype(float).values
Aug = pivot_table[8].astype(float).values
Sep = pivot_table[9].astype(float).values
Oct = pivot_table[10].astype(float).values
Nov = pivot_table[11].astype(float).values
Dec = pivot_table[12].astype(float).values
# build a dict containing the grouped data
months = OrderedDict(Jan=Jan, Feb=Feb, Mar=Mar, Apr=Apr, May=May,Jun=Jun,Jul=Jul,Aug=Aug,Sep=Sep,Oct=Oct,Nov=Nov,Dec=Dec)
palette = brewer["PuBuGn"][8]
output_file("stacked_bar.html")
bar = Bar(months, Companies, title="Stacked bars", palette = palette, legend = "top_right", width = 1200, height=900, stacked=True)
show(bar)
问题是这是输出。虽美,月无序。我希望他们从 1 月开始,一直到 12 月。
问题是参数由 OrderedDict 收集为字典 (kwargs),它没有排序。
改为这样做:
months = OrderedDict()
months['Jan'] = pivot_table[1].astype(float).values
months['Feb'] = pivot_table[2].astype(float).values
...
您可以像这样使用 OrderedDict:
months = OrderedDict([('Jan', Jan), ('Feb', Feb), ('Mar', Mar)])
或者:
months = OrderedDict()
months['Jan'] = Jan
months['Feb'] = Feb
months['Mar'] = Mar
OrderedDict 是一种字典,它会记住键的首次插入顺序。字典 (kwargs) 没有指定的顺序。
这几个月试试这个,
months = OrderedDict((
("Jan",Jan)
,("Feb",Feb)
,("Mar",Mar)
,("Apr",Apr)
,("May",May)
,("Jun",Jun)
,("Jul",Jul)
,("Aug",Aug)
,("Sep",Sep)
,("Oct",Oct)
,("Nov",Nov)
,("Dec",Dec)))