zzong2019 发表于 2022-1-16 10:05:55

pygal进行数据可视化无法生成x轴的主刻度(x_labels_major参数)

我在使用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=][::20]
line_chart.add('收盘价',stocks_price_data['close'])
line_chart.render_to_file('股票走势分析图.svg')
#print(][::20])

导入的json文件已上传至附件,望各位大神帮忙指点一下,感谢~~~

阿奇_o 发表于 2022-1-16 10:05:56

本帖最后由 阿奇_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=][::20]
line_chart.x_labels_major=xdates.to_list()[::N]# 不用列表推导式,用to_list()即可

zzong2019 发表于 2022-1-16 15:40:31

阿奇_o 发表于 2022-1-16 12:25
x_labels 要先设置为它能处理的数据类型才行,改成下面这样就行了:

我明白了,原来是x_labels这个地方没处理好出错了,感谢!
页: [1]
查看完整版本: pygal进行数据可视化无法生成x轴的主刻度(x_labels_major参数)