使用 Pandas 系列日期(字符串)作为绘图上的 x 刻度
Using Pandas Series of dates(strings) as x ticks on a plot
我有 3 个带有股票数据的 csv,全部从 2012-01-1 到 2017-01-01。我已经使用 Pandas 从它们中制作数据帧,并被指示将它们变成这个示例图:
[期望的结果][1]
我唯一的问题是 Pandas 没有像图片中那样从我的 Dataframe 中获取 'Date' 系列来创建时间的 X 轴,而是我得到一个值为 0 的 X 轴-1400 [我失败的情节][2](我有 1258 个日期,所以它获取的是日期索引而不是日期本身)。
这是我现在的情节代码:
ford['Open'].plot()
tesla['Open'].plot()
GM['Open'].plot(x=ford['Date'],figsize=(16,8),title='Open price',xlabel='Date')
plt.legend(['Ford','Tesla','GM'])
我尝试使用 xticks 参数并将其传递给 tesla['Date'](日期系列的名称),但是当我这样做时出现此错误:
ConversionError: Failed to convert value(s) to axis units: 0 2012-01-03
1 2012-01-04
2 2012-01-05
3 2012-01-06
4 2012-01-09
...
1253 2016-12-23
1254 2016-12-27
1255 2016-12-28
1256 2016-12-29
1257 2016-12-30
Name: Date, Length: 1258, dtype: object
我在 google 上找不到这个特定的问题,我已经找了一个小时了。我肯定错过了什么,但我不知道是什么。谢谢你的帮助
[1]: https://i.stack.imgur.com/bz8GU.png
[2]: https://i.stack.imgur.com/lSihy.png
Select 要显示的日期的索引(例如,每 200 个值一个勾号),并使用 plt.xticks。试试这个:
import numpy as np
ford['Open'].plot()
tesla['Open'].plot()
GM['Open'].plot()
plt.legend(['Ford','Tesla','GM'])
ticks = np.arange(0, len(ford['Date']), 200)
plt.xticks(ticks, ford['Date'][ticks])
使用 pandas 图,您可以通过堆叠每个图来创建图表,而无需指定 x-axis。数据取自雅虎财经,单位one-month。
import matplotlib.pyplot as plt
fig = plt.figure()
ford['Open'].plot()
tesla['Open'].plot()
GM['Open'].plot(figsize=(16,8),title='Open price',xlabel='Date')
plt.legend(['Ford','Tesla','GM'])
plt.show()
我有 3 个带有股票数据的 csv,全部从 2012-01-1 到 2017-01-01。我已经使用 Pandas 从它们中制作数据帧,并被指示将它们变成这个示例图: [期望的结果][1]
我唯一的问题是 Pandas 没有像图片中那样从我的 Dataframe 中获取 'Date' 系列来创建时间的 X 轴,而是我得到一个值为 0 的 X 轴-1400 [我失败的情节][2](我有 1258 个日期,所以它获取的是日期索引而不是日期本身)。
这是我现在的情节代码:
ford['Open'].plot()
tesla['Open'].plot()
GM['Open'].plot(x=ford['Date'],figsize=(16,8),title='Open price',xlabel='Date')
plt.legend(['Ford','Tesla','GM'])
我尝试使用 xticks 参数并将其传递给 tesla['Date'](日期系列的名称),但是当我这样做时出现此错误:
ConversionError: Failed to convert value(s) to axis units: 0 2012-01-03 1 2012-01-04 2 2012-01-05 3 2012-01-06 4 2012-01-09 ...
1253 2016-12-23 1254 2016-12-27 1255 2016-12-28 1256 2016-12-29 1257 2016-12-30 Name: Date, Length: 1258, dtype: object
我在 google 上找不到这个特定的问题,我已经找了一个小时了。我肯定错过了什么,但我不知道是什么。谢谢你的帮助 [1]: https://i.stack.imgur.com/bz8GU.png [2]: https://i.stack.imgur.com/lSihy.png
Select 要显示的日期的索引(例如,每 200 个值一个勾号),并使用 plt.xticks。试试这个:
import numpy as np
ford['Open'].plot()
tesla['Open'].plot()
GM['Open'].plot()
plt.legend(['Ford','Tesla','GM'])
ticks = np.arange(0, len(ford['Date']), 200)
plt.xticks(ticks, ford['Date'][ticks])
使用 pandas 图,您可以通过堆叠每个图来创建图表,而无需指定 x-axis。数据取自雅虎财经,单位one-month。
import matplotlib.pyplot as plt
fig = plt.figure()
ford['Open'].plot()
tesla['Open'].plot()
GM['Open'].plot(figsize=(16,8),title='Open price',xlabel='Date')
plt.legend(['Ford','Tesla','GM'])
plt.show()