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。查看文档,了解如何选择小时数。以后有机会我会修改答案