简单图不代表数据

时间:2018-09-24 21:53:13

标签: python pandas matplotlib

这是一个非常简单的问题。我有x年的轴,y轴的数字线性增加100。用pandas和matplotlib进行绘制时,会得到一个不表示任何数据的图形。我需要一些帮助来解决这个问题,因为它的代码量很小:

CSV如下:

A,B
2012,100
2013,200
2014,300
2015,400
2016,500
2017,600
2018,700
2012,800
2013,900
2014,1000
2015,1100
2016,1200
2017,1300
2018,1400

代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

data = pd.read_csv("CSV/DSNY.csv")

data.set_index("A", inplace=True)


data.plot()
plt.show()

产生的图形是:

graph from CSV data

这显然与数据不一致-有什么建议吗?

2 个答案:

答案 0 :(得分:4)

matplotlib / pandas的默认行为是在连续的数据点之间画一条线,而不是用符号标记每个数据点。

修复:将data.plot()更改为data.plot(style='o')df.plot(marker='o', linewidth=0)

结果: result of style='o'

答案 1 :(得分:1)

所有您需要的是在绘图之前进行A排序。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

data = pd.read_csv("CSV/DSNY.csv").reset_index()
data = data.sort_values('A')
data.set_index("A", inplace=True)


data.plot()
plt.show()

enter image description here