我想要抑制pyplot自动生成的滴答标签,以支持我自己的标签。当我在下面的Python中使用pyplot.yticks([])抑制y-蜱标签时,
from matplotlib import pyplot as plt
num_points = 10
data = [i for i in range(num_points)]
fig = plt.figure()
ax = plt.subplot(1,1,1)
ax.plot(data)
ax.set_yscale('log')
plt.yticks([])
plt.text(1, 7, '10 data points')
plt.show()pyplot按需要抑制y-蜱标签:

但是当num_points小于10时,pyplot忽略pyplot.yticks([]),插入其自动生成的滴答标签,并生成

当我通过plt.yticks(values_list, labels_list)提供一个值列表和标签列表来提供自己的滴答标签时,pyplot.yticks()接受我的标签,但它仍然绘制自动生成的滴答标签,覆盖我的标签。
如果我通过省略ax.set_yscale('log')语句将九点日志图更改为线性图,pyplot就不会自动绘制生成滴答标签:

这个问题似乎与低于10分的原状土地有关。如何抑制在日志图中自动生成的短于10分的滴答标签?
发布于 2020-03-30 07:07:33
在使用日志轴时,默认情况下不仅显示主要的滴答,而且还显示次要的滴答。你可以把它们分开关掉。请注意,当只有很少的主要蜱,小滴答也可以得到一个标签。
另外,请注意,在日志规模上设置零值通常不是一个好主意。由于log(0)是负无穷大,matplotlib必须对所需的滴答距离做一些脆弱的猜测。
from matplotlib import pyplot as plt
from matplotlib import ticker
num_points = 10
data = [i+2 for i in range(num_points)]
fig = plt.figure()
ax = plt.subplot(1,1,1)
ax.plot(data)
ax.set_yscale('log')
ax.text(1, 7, '10 data points')
ax.yaxis.set_major_locator(ticker.NullLocator())
ax.yaxis.set_minor_locator(ticker.NullLocator())
plt.show()这张图片显示的是蓝色的主要蜱虫和红色的小蜱。在这个例子中,只有一个主要的滴答,一些小滴答也有标签。

https://stackoverflow.com/questions/60922524
复制相似问题