matplotlib 当y轴的刻度值不同时,是否有方法为y轴做相等的空间?

cld4siwp  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(127)
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.ticker as ticker
import numpy as np

class plottingCanvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
        super(plottingCanvas, self).__init__(fig)
        fig.tight_layout()

canvas = plottingCanvas(self, width=5, height=4, dpi=100)
    

canvas.axes.yaxis.grid(True, linestyle='--')
ylabel = np.array([0.000002, 0.00001, 0.00002, 0.0001, 0.0002, 0.001, 0.002, 0.005, 0.01, 0.05, 0.1, 0.2])
canvas.axes.yaxis.set_ticks(ylabel)
ticker = matplotlib.ticker.EngFormatter(unit='V')
canvas.axes.yaxis.set_major_formatter(ticker)
canvas.axes.set_ylim(ymin=0.000002, ymax=0.200)
canvas.draw()

上面是代码,其中y轴表示电压值,范围从uV到mV。通过上面的代码,我得到了如下的曲线图:

我甚至尝试了下面的代码,但没有运气。

canvas.axes.yaxis.set_ticks(np.arange(ylabel))
canvas.axes.yaxis.set_set_ticklabels(ylabel)

有人可以帮助在获得等间距的y轴尺度。
谢谢.

期望等间距的y轴比例如上图所示。

zzwlnbp8

zzwlnbp81#

TL;DR:你在应该设置yticks的时候设置了ylabel。
您的新图像仍然不一致(除非您使用对数标度或类似)。您不能有2uV -> 10 uV等,您需要有2 uV -> 4 uV等。
你给出的代码中也有两个错误:
canvas = plottingCanvas(self, width=5, height=4, dpi=100)不应该包含self
ticker = matplotlib.ticker.EngFormatter(unit='V')不应该包含matplotlib,因为您已经使用了import matplotlib.ticker as ticker
我不熟悉backend_qt5agg,我将给予一个例子,下面使用常规图,它应该直接转换。
假设图的值是x和y,其中x是一个系列,y是一个系列,第三个值是步长值。
yticks(np.arange(min(y), max(y)+1, 3.0))
注意:最小值和最大值可以手动设置。例如,如果您喜欢将200 uV作为上限,则:
yticks(np.arange(0, 201, 1.0))
范例:

import matplotlib.pyplot as plt
import numpy as np

x = ["one", "two", three]
y = np.array([0.000002, 0.00001, 0.00002, 0.0001, 0.0002, 0.001, 0.002, 0.005, 0.01, 0.05, 0.1, 0.2])
plt.plot(x, y)
plt.xlabel('Time')
plt.ylabel('uV')
plt.yticks(np.arange(min(y), max(y)+1, 0.1))
plt.savefig('measurements.png')

给定例子中的一系列值-最小值为0.000002,最大值为0.2 -将这些值舍入是有意义的。当与0.2或0.05比较时,0.000002和0.00001之间有什么区别吗?它们可能在功能上为零。

相关问题