无风清响 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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog