无风清响 2019-03-24 22:49 采纳率: 0%
浏览 2687

关于用pygal画折线图日期横坐标时间显示问题

利用
N=30
line_chart.x_labels_major = dates[::N]

可以解决X轴每隔30天显示一次输出

有没有方法可以代替这个代码,每一个月显示一次输出呢?
如:2014-1-1,2014-2-1,2014-3-1以此类推

如图图片说明

另外,在此输出之前,定义:
current_date = row[0]x轴显示的是2014-1-1

current_date = datetime.strptime(row[0], "%Y-%m-%d")x轴显示的是2014-1-1 00:00:00,这个是什么回事呢?这个00:00:00后缀能不显示吗?

如图2图片说明

  • 写回答

1条回答

  • qxg0722 2020-05-13 13:09
    关注

    1.x轴只显示每个月1号
    在遍历json文件内容的时候,加上个判断,把每个月1号的值放入1个列表里
    if btc_dict['date'][-2:]=='01' :
    first_day.append(btc_dict['date'])
    画折现图的时候,显示x轴刻度那句代码改成: line_chart.x_labels_major = first_day

    2.2014-1-1 00:00:00的问题。创建图表的时候,x轴没有说必须要把字符串转化为日期对象啊,可以是字符串。直接取出来复到一个列表里,把列表赋给line_chart.x_labels就可以了。

    import pygal
    import json
    
    filename = 'btc_close_2017.json'
    with open(filename) as f:
        btc_data = json.load(f)
    
    dates = []
    months = []
    weeks = []
    weekdays = []
    close = []
    first_day = []
    for btc_dict in btc_data:
        if btc_dict['date'][-2:]=='01' :
            first_day.append(btc_dict['date'])
        dates.append(btc_dict['date'])
        months.append(int(btc_dict['month']))
        weeks.append(int(btc_dict['week']))
        weekdays.append(btc_dict['weekday'])
        close.append(int(float(btc_dict['close'])))
        print("{} is month {} week {}, {}, the close price is {} RMB".format(btc_dict['date'],btc_dict['month'],btc_dict['week'],btc_dict['weekday'],btc_dict['close']))
    print 
    
    
    line_chart = pygal.Line(x_label_rotation=20,show_minor_x_labels=False)
    line_chart.title = '显示每月1日的收盘价¥'
    line_chart.x_labels = dates
    #N = 20 #每隔20天显示一个x坐标
    line_chart.x_labels_major = first_day
    line_chart.add('收盘价',close)
    line_chart.render_to_file('显示每月1日的收盘价.svg')
    
    

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器