Python 获取我可以覆盖的semilogx绘图中matplotlib的记号标签
对于以下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
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
是一个将位置作为输入并输出字符串作为标签的函数。谢谢。这真的很有帮助。我希望可以在新问题()中发布下一个主题