|
2鱼币
我在使用pygal这个第三方库做一个展示一只股票在一段时间的股价走势的折线图,但是在对x_labels_major这个参数进行设置的时候无法正常运行,不知道是什么问题,已检查传入的数据是一个列表,列表中的元素类型为字符串(之前还试过用标准datetime类型)都不起作用。本案例的完整代码如下:
- import pandas as pd
- import pygal
- filename='btc_close_2017.json'
- '''使用pandas里面的read_json方法可以直接将json文件导入生成一个dataframe数组'''
- stocks_price_data=pd.read_json(filename)
- #print(stocks_price_data.info())
- '''下面使用pygal对股票走势进行数据可视化'''
- line_chart=pygal.Line(x_label_rotation=20,show_minor_x_labels=False)
- line_chart.title='股票走势分析图'
- line_chart.x_labels=stocks_price_data['date']
- N=20
- line_chart.x_labels_major=[i.strftime('%Y-%m-%d') for i in stocks_price_data['date']][::20]
- line_chart.add('收盘价',stocks_price_data['close'])
- line_chart.render_to_file('股票走势分析图.svg')
- #print([i.strftime('%Y-%m-%d') for i in stocks_price_data['date']][::20])
复制代码
导入的json文件已上传至附件,望各位大神帮忙指点一下,感谢~~~
本帖最后由 阿奇_o 于 2022-1-16 12:36 编辑
x_labels 要先设置为它能处理的数据类型才行,改成下面这样就行了:
- xdates = stocks_price_data['date'].dt.strftime("%Y-%m-%d") # 格式化日期,把每个日期转为str类型,原来是Timestamp
- line_chart.x_labels =xdates
- N=20
- # line_chart.x_labels_major=[i.strftime('%Y-%m-%d') for i in stocks_price_data['date']][::20]
- line_chart.x_labels_major=xdates.to_list()[::N] # 不用列表推导式,用to_list()即可
复制代码
|
最佳答案
查看完整内容
x_labels 要先设置为它能处理的数据类型才行,改成下面这样就行了:
|