gpt4 book ai didi

python - 在 Pandas 绘图上添加几天的刻度

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:28 24 4
gpt4 key购买 nike

使用 pandas 绘制 DataFrame 时:

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()

我明白了:

enter image description here

问题:

如何在每天的x轴上添加刻度+标签+网格?

示例:周日 06、周一 07、周二 08

我尝试了各种方法,例如plt.axis(...),但大多不成功。

最佳答案

您可以使用 matplotlib.dates 中的 DayLocatorDatesFormatter 来完成此操作。

来自文档:

DayLocator

Make ticks on occurances of each day of the month

还有

DateFormatter

Use a strftime() format string.

因此,就您的情况而言,我们希望将格式字符串设置为 "%a %d" 以获得 Mon 07 等。

我们为 返回的 Axesxaxismajor_locatormajor_formatter 设置这些pandas 当你调用 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()

enter image description here

关于python - 在 Pandas 绘图上添加几天的刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34357215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com