В следующем коде первые деления по оси X становятся научным обозначением, как показано на снимке экрана.
fig, ax = plt.subplots() для имени в self.config_name: x, y = self.getPosition()[имя] sns.scatterplot(x, y) ax.set_xscale('журнал') minor_locator = LogLocator(base=10.0, subs=np.arange(2, 300) * 2) ax.xaxis.set_minor_locator(minor_locator) ax.xaxis.set_minor_formatter(ScalarFormatter()) альфа, бета = self.getFitParams()[имя] y_hat = ss.weibull_min.cdf(x, beta, масштаб=альфа, loc=0) sns.lineplot(x, y_hat) self.config_name — это атрибут класса, который содержит имена столбцов pandas df. self.getPosition() — это метод класса, предоставляющий массивы x и y. Аналогично, self.getFitParams() — это еще один метод, предоставляющий параметры для y_hat.
Вот пример двух массивов x и параметров;
x1 = np.array([140, 206, 216, 217, 219, 220, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 237, 247, 248, 250, 253, 254, 255, 256, 257, 260, 262, 266, 268, 269, 270, 271]) x2 = np.array([ 98, 99, 102, 108, 110, 117, 118, 119, 120, 121, 122, 126, 127, 131, 133, 143, 144, 146, 147, 148, 149, 150, 152, 158, 159, 161, 162]) y1 = np.array([0,02, 0,05, 0,08, 0,11, 0,15, 0,18, 0,21, 0,24, 0,27, 0,30, 0,33, 0,36, 0,39, 0,42, 0,45, 0,48, 0,51, 0,55, 0,58, 0,61, 0,64, 0,67, 0,70, 0,73, 0,76, 0,79, 0,82, 0,85, 0,89, 0,91666667, 0,95, 0,98]) у2 = у1 альфа1 = 245 бета1 = 13 альфа2 = 140 бета2 = 7 Я пробовал useOffset=False, useMathText=True, minor_formatter.set_scientific(False), увеличивая базу на LogLocator и даже собственный класс для logLocator, но безрезультатно:
