代码之家  ›  专栏  ›  技术社区  ›  user2138149

如何防止matplotlib在轴上绘制“日数”

  •  1
  • user2138149  · 技术社区  · 2 年前

    在使用matplotlib绘制一些数据时,我看到了一个有点烦人的问题。

    如下面的输出示例所示,x轴的格式有点出乎意料。

    标签是(例如) 04 12:30 这个 04 是一个月的第几天。

    提供的代码和数据是为了重现这一数字,附在本问题的末尾。

    为什么x轴的格式是这样的?我能做些什么来“修复”它?(我不想显示一个月的哪一天,特别是不想将其格式化为“04”。)

    matplotlib figure

    密码

    要运行代码: python3 example.py

    # example.py
    
    import matplotlib.pyplot as plt
    import pandas
    
    df = pandas.read_json('data.json')
    
    print(df.head())
    
    fig, ax1 = plt.subplots(figsize=(12, 8))
    ax1.plot(df['column_name'], label='My data')
    ax1.set_xlabel('Timestamp')
    ax1.set_ylabel('Value')
    ax1.grid(True)
    ax1.legend()
    
    plt.title('Example')
    plt.tight_layout()
    plt.savefig('example.png')
    

    数据

    将此文件另存为 data.json

    {"column_name":{"1649073600000":174.79,"1649073660000":174.8,"1649073720000":174.79,"1649073780000":174.76,"1649073840000":174.69,"1649073900000":174.7,"1649073960000":174.69,"1649074020000":174.65,"1649074140000":174.67,"1649074200000":174.7,"1649074260000":174.74,"1649074320000":174.65,"1649074380000":174.69,"1649074440000":174.65,"1649074500000":174.7,"1649074560000":174.74,"1649074680000":174.72,"1649074740000":174.7,"1649074860000":174.7,"1649074920000":174.71,"1649074980000":174.75,"1649075040000":174.76,"1649075100000":174.73,"1649075160000":174.76,"1649075220000":174.7,"1649075280000":174.66,"1649075340000":174.61,"1649075400000":174.63,"1649075460000":174.65,"1649075520000":174.7,"1649075580000":174.69,"1649075640000":174.63,"1649075760000":174.66,"1649075820000":174.63,"1649075880000":174.58,"1649075940000":174.5,"1649076000000":174.52,"1649076060000":174.55,"1649076120000":174.55,"1649076180000":174.54,"1649076240000":174.48,"1649076300000":174.45,"1649076360000":174.38,"1649076420000":174.22,"1649076480000":174.21,"1649076540000":174.15,"1649076660000":174.25,"1649076720000":174.3,"1649076780000":174.28,"1649076840000":174.26,"1649076900000":174.25,"1649076960000":174.23,"1649077020000":174.21,"1649077080000":174.25,"1649077140000":174.26,"1649077200000":174.27}}
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   BigBen    2 年前

    DateFormatter 在这里运行良好:

    from matplotlib.dates import DateFormatter
    ...
    ax1.xaxis.set_major_formatter(DateFormatter('%H:%M'))
    

    输出:

    enter image description here