首页 > 解决方案 > 使用 Matplotlib 平滑折线图

问题描述

我有一个看起来像这样的熊猫数据框:

import pandas as pd 
import matplotlib.pyplot

data = [{'A': 21, 'B': 23, 'C':19, 'D':26,'E':28,
        'F':26,'G':23,'H':22,'I':24,'J':21}] 

# Creates DataFrame. 
df = pd.DataFrame(data)

plt.figure(figsize=(12,8))

df.iloc[-1].plot(marker='o',markersize=5)

plt.show()

当我尝试在 Matplotlib 中绘制它时,我得到了一条非常锯齿状的线。

有没有办法让线条变得平滑,让它看起来更弯曲和流畅?

我曾尝试使用 scipy 的插值,但没有成功。

谢谢

标签: pythonpandasmatplotlib

解决方案


这应该可以解决问题:

import pandas as pd 
import matplotlib.pyplot as plt
from scipy import make_interp_spline

data = [{'A': 21, 'B': 23, 'C':19, 'D':26,'E':28,
        'F':26,'G':23,'H':22,'I':24,'J':21}] 

# Creates DataFrame. 
df = pd.DataFrame(data)

y = np.array(df.iloc[-1].tolist())
x = np.arange(len(df.iloc[-1]))

xnew = np.linspace(x.min(), x.max(), 300) 
spl = make_interp_spline(x, y, k=3)
ysmooth= spl(xnew)

plt.plot(xnew, ysmooth)

在此处输入图像描述


推荐阅读