为什么绘制数据透视表时,图例的标题中没有'None'?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么绘制数据透视表时,图例的标题中没有'None'?相关的知识,希望对你有一定的参考价值。

我有一个数据框,然后调用pivot_table方法,然后绘制结果。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'Date': ['2020-04-10', '2020-04-11', '2020-04-12', '2020-04-13','2020-04-10', '2020-04-11', '2020-04-12', '2020-04-13'],
'Station': ['Hogwarts', 'Hogwarts', 'Hogwarts', 'Hogwarts','Hogwarts', 'Hogwarts', 'Hogwarts', 'Hogwarts'],
'Direction': ['Southbound', 'Southbound', 'Southbound', 'Southbound','Northbound','Northbound','Northbound','Northbound'],
'Daily trains': [1,1,2,3,0,0,2,1]})

df['Date'] = pd.to_datetime(df['Date'],format="%Y-%m-%d")

df1 = df.pivot_table(index='Date', columns=['Station','Direction'],values=['Daily trains'])
fig, ax = plt.subplots(1)

df1.plot(ax=ax)
ax.figure.savefig('so.png',bbox_inches='tight')

这里是结果:

enter image description here

为什么我在图例的标题中得到'None'

答案

它标记列名称。

df1.columns.names
FrozenList([None, 'Station', 'Direction'])

您提供的是list值,但只有一个值,因此它在您的MultiIndex列中创建了不必要的级别。删除那个。

...

df1 = df.pivot_table(index='Date', columns=['Station','Direction'], values='Daily trains')
fig, ax = plt.subplots(1)

df1.plot(ax=ax)
ax.figure.savefig('so.png',bbox_inches='tight')

enter image description here

以上是关于为什么绘制数据透视表时,图例的标题中没有'None'?的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:'NoneType'对象没有属性'legendHandles',而在自定义图例中为每个标签手动分配颜色时

为啥在创建数据透视表时,Excel2013无法勾选“将此数据添加到数据模型?

在子图位置上绘制图例

pyqtgraph删除pyqt4 gui中的持久图例

图例未绘制在图表中

在 laravel 中使用多对多关系同步:PostgreSQL 数据透视表不更新