删除pandas plot.area的抗锯齿

时间:2017-06-18 07:45:36

标签: python pandas matplotlib plot

我想用Python绘制堆积区域,并找出这个Pandas'功能:

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.area();

然而,结果是奇怪的抗锯齿,将颜色混合在一起,如下面的2个图所示: Example of plot.area

Zoom of plot.area

documentation中提供的示例中出现同样的问题。

你知道如何删除这种抗锯齿吗? (或另一种意思是为线图的堆叠表示得到一个整洁的输出。)

2 个答案:

答案 0 :(得分:3)

使用matplotlib堆栈图可以正常工作

fig, ax = plt.subplots()
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax.stackplot(df.index, df.values.T)

enter image description here

由于区域图是堆积图,唯一的区别是区域的线宽,您可以设置为零。

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.area(linewidth=0)

enter image description here

其余的灰线确实是由于抗锯齿。您可以在matplotlib图中关闭它

fig, ax = plt.subplots()
ax.stackplot(df.index, df.values.T, antialiased=False)

然而,结果可能不具有视觉吸引力:

enter image description here

答案 1 :(得分:2)

看起来有两个界限 尝试零线宽:

df.plot.area(lw=0);

enter image description here