答案 0 :(得分:2)
我不确定您是否真的想要1%的间距,因为那样会简单地绘制大量密集的线,最终您会看到很宽的水平线带。无论如何,这是一种方法。我使用10%的间距以获得更好的表示效果,但您可以将1.1替换为1.01
@OneToMany
答案 1 :(得分:0)
您可以编写自定义定位器,以将刻度设置为上一个刻度位置的1.01。这样的定位器可能看起来像
VueFormGenerator
然后,您可以使用次网格显示上述定位器所定位的网格线。
import numpy as np; np.random.seed(42)
import matplotlib.pyplot as plt
import matplotlib.ticker
class GeomLocator(matplotlib.ticker.IndexLocator):
def __call__(self):
if self.axis.axis_name =="x":
vmin, vmax = self.axis.axes.get_xlim()
elif self.axis.axis_name =="y":
vmin, vmax = self.axis.axes.get_ylim()
return self.tick_values(vmin, vmax)
def tick_values(self, vmin, vmax):
n = int(np.log(vmax/vmin)/np.log(self._base))
ticks = np.ones(n+2)
ticks[1:] = self._base
ticks = vmin * np.cumprod(ticks)
return ticks
这样做的好处是,您无需在代码中完全了解绘图的限制,而可以在网格始终保持最新状态的情况下自由平移或缩放绘图。