绘制Pandas Plot中的重复()

时间:2015-04-01 13:34:45

标签: python pandas matplotlib plot axis

Pandas中的plot()函数存在问题

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'A', 'B'])
ax = df.plot()
ax.legend(ncol=1, bbox_to_anchor=(1., 1, 0., 0), loc=2 , prop={'size':6})

这会产生一条线条过多的情节。但请注意,一半会相互叠加。它似乎与轴有关,因为当我不使用它时,问题就会消失。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'A', 'B'])
df.plot()

更新

虽然不知道我的用例,但可以通过使用MultiIndex

来解决问题
columns = pd.MultiIndex.from_arrays([np.hstack([ ['left']*2, ['right']*2]), ['A', 'B']*2], names=['High', 'Low'])
df = pd.DataFrame(np.random.randn(8, 4), columns=columns)
ax = df.plot()
ax.legend(ncol=1, bbox_to_anchor=(1., 1, 0., 0), loc=2 , prop={'size':16})

1 个答案:

答案 0 :(得分:0)

它与您的列名重复有关,而不是ax(如果您在第二个示例之后调用plt.legend,则会看到相同的额外行)。拥有多个具有相同名称的列会使调用混淆为DataFrame.plot_frame

如果您将列更改为['A', 'B', 'C', 'D'],则可以。