我想将刻度线之间的间距设置为自定义距离,而不是自动生成。我想实现这个图在y轴上的作用。 https://pasteboard.co/H0XUbpq.jpg
我找到了如何设置自定义刻度的方法,但是轴上的间距仍然相同,然后大多数刻度仍然彼此接近。所以我希望刻度线间隔与y轴上刻度线之间的间距不同,就像我上面链接的图形一样。
答案 0 :(得分:4)
我认为您发布的图片是log plot in y axis。 y轴上的每个刻度值是较低的刻度值乘以2.在正常绘图中,它们的距离不相同,但在对数图中,它们的距离是相同的。
由于您没有数据,我将展示一个玩具示例,演示如何在y轴上使用日志图:
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
x = np.linspace(20, 51, 7)
y1 = np.exp(x**0.2)
y2 = np.exp(x**0.4)
y3 = np.exp(x**0.6)
y4 = np.exp(x**0.8)
fig, ax = plt.subplots(ncols=1, nrows=1)
ax.plot(x, y1, x, y2, x, y3, x, y4)
ax.set_yscale('log')
ax.minorticks_off()
ax.set_xticks(range(18, 54, 5))
ax.grid(linestyle='--')
ax.grid(linestyle='--')
plt.show()
答案 1 :(得分:1)
您可以为轴使用单独的FuncFormatters:
from matplotlib.ticker import FuncFormatter
from matplotlib.pyplot import show
import matplotlib.pyplot as plt
import numpy as np
a=np.random.random((100,100))
# create scaled formatters / for Y with Atom prefix
formatterY = FuncFormatter(lambda y, pos: '{0:g}'.format(y))
formatterX = FuncFormatter(lambda x, pos: '{0:g}'.format(x))
# apply formatters
fig, ax = plt.subplots()
ax.yaxis.set_major_formatter(formatterY)
ax.xaxis.set_major_formatter(formatterX)
plt.imshow(a)
# create labels
plt.xlabel('x label')
plt.ylabel('y label')
plt.xticks(list(range(0, 100,5)))
plt.yticks(list(range(100, 0,-20)))
plt.show()
以独立方式设计它们。见pylab_examples - 可能会给你一个起点。