Python 简单图不表示数据
这是一个非常直截了当的问题。我有和x轴的年数和y轴的数,线性增加100。当用pandas和matplotlib绘制此图时,我得到了一个不代表任何数据的图形。我需要一些帮助来解决这个问题,因为它的代码量非常小: CSV如下所示:Python 简单图不表示数据,python,pandas,matplotlib,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
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()
由此得出的图表为:
这显然与数据非常不一致-有什么建议吗?您只需在绘图前进行排序即可
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()
您只需在打印前对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()
matplotlib/pandas的默认行为是在连续数据点之间绘制一条线,而不是用符号标记每个数据点 修复:将
data.plot()
更改为data.plot(style='o')
,或df.plot(marker='o',linewidth=0)
结果:
matplotlib/pandas的默认行为是在连续数据点之间绘制一条线,而不是用符号标记每个数据点 修复:将
data.plot()
更改为data.plot(style='o')
,或df.plot(marker='o',linewidth=0)
结果:
它绝对代表数据。
A
A是字符串吗?时间轴(A)数据不是单调的……它从2018年跳回到2012年,并采用不同的B值集。你可以试着按时间顺序对数据点进行排序,但绘图看起来仍然很奇怪,它绝对代表了数据。A
A是字符串吗?时间轴(A)数据不是单调的……它从2018年跳回到2012年,并采用不同的B值集。您可以尝试按时间顺序对数据点进行排序,但绘图看起来仍然很奇怪。这会生成一个锯齿形图案,其中包含垂直段,而OP可能不需要这些垂直段。我认为解决方案是抑制线条,并添加一个带有df.plot(style='o')
的标记符号。这会产生一个锯齿形图案,其垂直段可能不是OP想要的。我认为解决方案是抑制线条并添加带有df.plot(style='o')
的标记符号。