在 Pandas Plot() 中绘制重复

Plot duplication in Pandas Plot()

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})

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

的调用

如果您将列更改为 ['A', 'B', 'C', 'D'],没问题。