<p>我找到了一种更简单的方法,可能适用于:</p>
<p>我用了斧头组方法,其输出来自以下函数</p>
<pre><code>def gen_tick_positions(scale_start=100, scale_max=10000):
start, finish = np.floor(np.log10((scale_start, scale_max)))
finish += 1
majors = [10 ** x for x in np.arange(start, finish)]
minors = []
for idx, major in enumerate(majors[:-1]):
minor_list = np.arange(majors[idx], majors[idx+1], major)
minors.extend(minor_list[1:])
return minors, majors
</code></pre>
<p>例如,你可以从这个区域推断出线性区域斧头。去拿钥匙()(即大约为零的值,不是10个不同的系数0-1/10)</p>
^{pr2}$
<p>然后给您一个开始值来放入上面的函数中,<code>scale_max</code>是您喜欢的任何值,例如<code>total_scale[-1]</code>。在</p>
<p>您可以使用first_log的正负区域来生成线性记号,然后合并列表。在</p>
<pre><code>lin_ticks = list(np.linspace(first_log * -1, first_log, 21))
pos_log_ticks_minors, pos_log_ticks_majors = gen_tick_positions(first_log, scale_max)
neg_log_ticks_minors = [x * -1 for x in pos_log_ticks_minors]
neg_log_ticks_majors = [x * -1 for x in pos_log_ticks_majors]
final_scale_minors = neg_log_ticks_minors + lin_ticks + pos_log_ticks_minors
The merged list can then be passed into e.g.
ax.set_yticks(final_scale_minors, minor=True)
</code></pre>
<p>虽然我觉得你不需要从曲线图上或者从轴上读取线性阈值,因为当你应用“symlog”时,它被指定为一个参数。在</p>