鱼C论坛

 找回密码
 立即注册
查看: 1102|回复: 2

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

[复制链接]
发表于 2022-1-16 10:05:55 | 显示全部楼层 |阅读模式
2鱼币
我在使用pygal这个第三方库做一个展示一只股票在一段时间的股价走势的折线图,但是在对x_labels_major这个参数进行设置的时候无法正常运行,不知道是什么问题,已检查传入的数据是一个列表,列表中的元素类型为字符串(之前还试过用标准datetime类型)都不起作用。本案例的完整代码如下:
  1. import pandas as pd
  2. import pygal
  3. filename='btc_close_2017.json'
  4. '''使用pandas里面的read_json方法可以直接将json文件导入生成一个dataframe数组'''
  5. stocks_price_data=pd.read_json(filename)
  6. #print(stocks_price_data.info())

  7. '''下面使用pygal对股票走势进行数据可视化'''
  8. line_chart=pygal.Line(x_label_rotation=20,show_minor_x_labels=False)
  9. line_chart.title='股票走势分析图'
  10. line_chart.x_labels=stocks_price_data['date']
  11. N=20
  12. line_chart.x_labels_major=[i.strftime('%Y-%m-%d') for i in stocks_price_data['date']][::20]
  13. line_chart.add('收盘价',stocks_price_data['close'])
  14. line_chart.render_to_file('股票走势分析图.svg')
  15. #print([i.strftime('%Y-%m-%d') for i in stocks_price_data['date']][::20])
复制代码


导入的json文件已上传至附件,望各位大神帮忙指点一下,感谢~~~
最佳答案
2022-1-16 10:05:56
本帖最后由 阿奇_o 于 2022-1-16 12:36 编辑

x_labels 要先设置为它能处理的数据类型才行,改成下面这样就行了:
  1. xdates = stocks_price_data['date'].dt.strftime("%Y-%m-%d")   # 格式化日期,把每个日期转为str类型,原来是Timestamp
  2. line_chart.x_labels =xdates
  3. N=20
  4. # line_chart.x_labels_major=[i.strftime('%Y-%m-%d') for i in stocks_price_data['date']][::20]
  5. line_chart.x_labels_major=xdates.to_list()[::N]  # 不用列表推导式,用to_list()即可

复制代码

btc_close_2017.rar

4.26 KB, 下载次数: 1

最佳答案

查看完整内容

x_labels 要先设置为它能处理的数据类型才行,改成下面这样就行了:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-16 10:05:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 阿奇_o 于 2022-1-16 12:36 编辑

x_labels 要先设置为它能处理的数据类型才行,改成下面这样就行了:
  1. xdates = stocks_price_data['date'].dt.strftime("%Y-%m-%d")   # 格式化日期,把每个日期转为str类型,原来是Timestamp
  2. line_chart.x_labels =xdates
  3. N=20
  4. # line_chart.x_labels_major=[i.strftime('%Y-%m-%d') for i in stocks_price_data['date']][::20]
  5. line_chart.x_labels_major=xdates.to_list()[::N]  # 不用列表推导式,用to_list()即可

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-16 15:40:31 | 显示全部楼层
阿奇_o 发表于 2022-1-16 12:25
x_labels 要先设置为它能处理的数据类型才行,改成下面这样就行了:

我明白了,原来是x_labels这个地方没处理好出错了,感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 05:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表