【发布时间】:2021-04-08 03:21:02
【问题描述】:
我正在通过 DiscordPy 创建一个机器人,当用户写 !unemployment 时,该机器人会向美国劳工统计局网站发出服务器调用,并收集最新失业人数的 JSON 文件。
@commands.command(name="unemployment")
async def unemployment(self, context):
headers = {'Content-type': 'application/json'}
data = json.dumps({"seriesid": ['LNS14000000']})
url = "https://api.bls.gov/publicAPI/v2/timeseries/data/"
# Async HTTP request
async with aiohttp.ClientSession() as session:
raw_response = await session.post(url, data=data, headers=headers)
response = await raw_response.text()
r = json.loads(response)
数据显示过去 24 个月的逐月数据。我使用 Pandas 将信息格式化为我喜欢的格式,然后将信息提供给 Matplotlib 以生成图表。
# Initialize IO
data_stream = io.BytesIO()
# Plot graph
plt.figure(figsize=(1,1))
ax = df.plot(x="period",y="value")
plt.gca().invert_xaxis()
ax.yaxis.set_major_formatter(mtick.PercentFormatter(1))
ax.get_legend().remove()
# Save content into the data stream
plt.savefig(data_stream, format='png', bbox_inches="tight", dpi = 80)
plt.close()
我按照此处的说明进行操作:Matplotlib graphic image to base64 将我的图形转换为 base64 图像,因为我不想将图像保存在服务器上,而是希望有一个 base64 字符串可以用来在飞,对记忆影响不大。但不幸的是,Discordpy 的embed.set_image() 值的格式为data:image/png;base64,<BASE64 code>。
【问题讨论】:
标签: matplotlib discord.py