Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取我可以覆盖的semilogx绘图中matplotlib的记号标签_Python_Matplotlib - Fatal编程技术网

Python 获取我可以覆盖的semilogx绘图中matplotlib的记号标签

Python 获取我可以覆盖的semilogx绘图中matplotlib的记号标签,python,matplotlib,Python,Matplotlib,对于以下Matplotlib图,我想: 显示所有小刻度的正确标签 能够将主刻度和次刻度重命名为我需要的值 这是我的代码: import pandas as pd import numpy as np ONE_YEAR_IN_DAYS = 365 ONE_DAY_IN_TIMESTAMP_UNITS = 86400000000000 import pandas as pd start = pd.Timestamp('2016-07-01') end = pd.Timestamp('2017

对于以下Matplotlib图,我想:

  • 显示所有小刻度的正确标签
  • 能够将主刻度和次刻度重命名为我需要的值
  • 这是我的代码:

    import pandas as pd
    import numpy as np
    
    ONE_YEAR_IN_DAYS = 365
    
    ONE_DAY_IN_TIMESTAMP_UNITS = 86400000000000
    
    import pandas as pd
    
    start = pd.Timestamp('2016-07-01')
    end = pd.Timestamp('2017-07-01')
    
    t = np.linspace(start.value, end.value, 100 * ONE_YEAR_IN_DAYS)
    
    sinus = np.sin(2 * np.pi * 1 * t / ONE_DAY_IN_TIMESTAMP_UNITS)
    
    t = end.value - t
    
    import matplotlib
    
    matplotlib.use('TkAgg')
    font = {'family': 'normal',
            'size': 8}
    matplotlib.rc('font', **font)
    import matplotlib.pyplot as plt
    
    axes = plt.gca()
    import matplotlib.ticker as ticker
    
    plt.rcParams["figure.dpi"] = 400
    plt.xticks(rotation=90)
    plt.minorticks_on()
    plt.grid()
    from matplotlib.ticker import FormatStrFormatter
    from matplotlib.ticker import LogFormatter
    plt.minorticks_on()
    formatter = LogFormatter(labelOnlyBase=True, )
    plt.setp(axes.xaxis.get_minorticklabels(), rotation=90)
    
    locmaj = matplotlib.ticker.LogLocator(base=5.0,numticks=12)
    axes.xaxis.set_major_locator(locmaj)
    locmin = matplotlib.ticker.LogLocator(base=5.0,subs=(0.2,0.4,0.6,0.8),numticks=12)
    axes.xaxis.set_minor_locator(locmin)
    axes.xaxis.set_minor_formatter(matplotlib.ticker.NullFormatter())
    
    plt.semilogx(t, sinus, "-o", markersize=2)
    
    plt.show()
    
    我使用Matplotlib 2.0.2

    正如您所看到的,我不知何故在正确的次要标签生成方面遇到了困难

    这是我目前得到的结果:


    我不太明白这个问题。如果删除代码中的所有次要标签,“正确的次要标签生成”是什么?您希望绘图是什么样的?您真的希望以对数刻度显示小刻度标签吗?@ImportanceOfBeingErnest:在第一步中,我希望看到小刻度标签。在第二步中,我想手动将它们重新格式化/重新计算为格式化的日期时间值@巴辛加:是的,没错。我的问题的背景是:我想了解一下,通过一些“真实”数据,我是否可以看到旧值的足够详细信息(例如:
    1*10e13
    相当于半天,
    1*10e14
    相当于离开
    now
    一天等等)<代码>现在在图表的最左边,一年前在图表的最右边。最近的数据应该更详细地显示出来。我想您应该使用
    FuncFormatter
    ,即
    set\u minor\u格式化程序(matplotlib.ticker.FuncFormatter(func))
    ,其中
    func
    是一个将位置作为输入并输出字符串作为标签的函数。谢谢。这真的很有帮助。我希望可以在新问题()中发布下一个主题