假设你有以下的数据框:
x = [2,1,3,6,5,6,7]
y = [1,2,5,1,1,6,1]
df = pd.DataFrame({"y" : y }, index=x)
调用`plt.plot(df["y"].as_matrix())`等同于`plt.plot(y)`,它只会绘制`y`值和其自身的索引(从0开始,每次增加1)。相反,`plt.plot(df["y"])`等同于`plt.plot(x,y)`,它会将`y`值绘制在数据框的索引上。如果这些索引没有排序,图形将会看起来扭曲。(对于pandas plot命令也是如此。)
以下是一个完整的例子。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"y" : [1,2,5,1,1,6,1] }, index=[2,1,3,6,5,6,7])
plt.plot(df["y"].as_matrix(), lw=3, label='plt.plot(df["y"].as_matrix())')
plt.plot(df["y"], lw=3, label='plt.plot(df["y"])')
df["y"].plot(ax=plt.gca(), linestyle="--", color="k", label='df["y"].plot()')
plt.legend()
plt.show()
![enter image description here](https://istack.dev59.com/23BjQ.webp)
使用上述任何一种方法的最简单解决方案是重新索引数据帧。
df = df.reset_index()