Python 在“熊猫”绘图上添加天的刻度

Python 在“熊猫”绘图上添加天的刻度,python,pandas,matplotlib,plot,Python,Pandas,Matplotlib,Plot,使用熊猫绘制数据帧时: import pandas as pd import matplotlib.pyplot as plt from StringIO import StringIO mycsv = StringIO(""" time;openBid;highBid;lowBid;closeBid;openAsk;highAsk;lowAsk;closeAsk;volume 2015-12-06T22:00:00.000000Z;1.08703;1.0871

使用熊猫绘制数据帧时:

import pandas as pd
import matplotlib.pyplot as plt 
from StringIO import StringIO

mycsv = StringIO("""
time;openBid;highBid;lowBid;closeBid;openAsk;highAsk;lowAsk;closeAsk;volume
2015-12-06T22:00:00.000000Z;1.08703;1.08713;1.08703;1.08713;1.08793;1.08813;1.08793;1.08813;2
2015-12-07T22:00:05.000000Z;1.08682;1.08682;1.08662;1.08662;1.08782;1.08782;1.08762;1.08762;2
2015-12-08T22:01:20.000000Z;1.08683;1.08684;1.08681;1.08684;1.08759;1.08768;1.08759;1.08768;4
2015-12-09T22:01:30.000000Z;1.08676;1.08676;1.08676;1.08676;1.0876;1.0876;1.0876;1.0876;1
2015-12-10T00:03:00.000000Z;1.08675;1.08675;1.08675;1.08675;1.08737;1.08737;1.08737;1.08737;1
2015-12-06T22:03:10.000000Z;1.08675;1.08675;1.08675;1.08675;1.08728;1.08728;1.08728;1.08728;1
2015-12-06T22:03:50.000000Z;1.08676;1.08676;1.08676;1.08676;1.08728;1.08728;1.08728;1.08728;1
""")

df = pd.read_csv(mycsv, delimiter=';', parse_dates=True, index_col='time', header=0)
spr = df['lowAsk']-df['lowBid']
spr.plot()
plt.show()
我明白了:

问题: 如何每天在x轴上添加记号+标签+网格?

示例:
sun06、mon07、tue08等


我尝试了各种方法,如
plt.axis(…)
,但大部分都没有成功。

您可以使用
DayLocator
datesformter
matplotlib.dates
执行此操作

从文档中:

记下每月每天发生的事情

使用格式字符串

因此,在您的情况下,我们希望将格式字符串设置为
“%a%d”
,以获取
Mon 07
,等等

调用
spr.plot()

下面是你的例子:

import pandas as pd
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates
from StringIO import StringIO

mycsv = StringIO("""
time;openBid;highBid;lowBid;closeBid;openAsk;highAsk;lowAsk;closeAsk;volume
2015-12-06T22:00:00.000000Z;1.08703;1.08713;1.08703;1.08713;1.08793;1.08813;1.08793;1.08813;2
2015-12-07T22:00:05.000000Z;1.08682;1.08682;1.08662;1.08662;1.08782;1.08782;1.08762;1.08762;2
2015-12-08T22:01:20.000000Z;1.08683;1.08684;1.08681;1.08684;1.08759;1.08768;1.08759;1.08768;4
2015-12-09T22:01:30.000000Z;1.08676;1.08676;1.08676;1.08676;1.0876;1.0876;1.0876;1.0876;1
2015-12-10T00:03:00.000000Z;1.08675;1.08675;1.08675;1.08675;1.08737;1.08737;1.08737;1.08737;1
2015-12-06T22:03:10.000000Z;1.08675;1.08675;1.08675;1.08675;1.08728;1.08728;1.08728;1.08728;1
2015-12-06T22:03:50.000000Z;1.08676;1.08676;1.08676;1.08676;1.08728;1.08728;1.08728;1.08728;1
""")
df = pd.read_csv(mycsv, delimiter=';', parse_dates=True, index_col='time', header=0)
spr = df['lowAsk']-df['lowBid']

ax=spr.plot()

ax.xaxis.set_major_locator(mdates.DayLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%a %d'))

plt.show()

备注:在这种情况下,我并没有帮上什么忙,非常感谢!我可以补充一点吗:是否可以每天增加几个小时的滴答声?i、 例如0h 6h 12h 18h…+也为每一个新的一天设置垂直网格?尝试将minor_定位器设置为mates.HourLocator。查看文档,了解如何选择小时数。以后有机会我会修改答案