获取库存
aaa
通过网络API:
import requests,json,time
import pandas as pd
from pandas import json_normalize
ticker = 'aaa'
start_date='2020-01-01'
end_date='2023-05-10'
fd = int(time.mktime(time.strptime(start_date, "%Y-%m-%d")))
td = int(time.mktime(time.strptime(end_date, "%Y-%m-%d")))
data = requests.get('https://apipubaws.tcbs.com.vn/stock-insight/v1/stock/bars-long-term?ticker={}&type=stock&resolution=D&from={}&to={}'.format(ticker, fd, td)).json()
df = json_normalize(data['data'])
df['tradingDate'] = pd.to_datetime(df.tradingDate.str.split("T", expand=True)[0])
df.columns = ['open', 'high', 'low', 'close', 'volume', 'date']
准备用于绘图的 x,y 数据:
x = df['date'][0:30]
y = df['close'][0:30]
画图:
plt.plot(x,y)
plt.xticks(rotation=90)
plt.show()
原始数据(x,y)中有30个日期,
plt.show()
只画出部分日期,怎么把x轴的30个日期都画出来?
>>> min(x)
Timestamp('2020-01-02 00:00:00')
>>> max(x)
Timestamp('2020-02-19 00:00:00')
>>> len(x)
30
我想写从
2020-01-02
到 2020-02-19
的每个日期,x 轴上显示 30 个日期。
将时间戳转换为字符串并提取部分
xxxx-xx-xx
.
x=x.apply(lambda x:str(x)[0:10])
plt.plot(x,y)
plt.xticks(rotation=90)
plt.show()
如果你想显示每个日历日期,你可以在底部添加这些行。这将显示每个日历日期(50 个条目)...
import matplotlib.dates as mdates
from matplotlib import dates
plt.gca().xaxis.set_major_locator(dates.DayLocator(interval=1)) #to get a tick every day
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y')) #optional formatting
plt.show()
但是,如果您只想查看
x
中有数据的日期,则需要在 plt.show()
之前添加此行以及上面的代码。这将显示 30 个条目....
plt.gca().set_xticks(x)