Я хотел бы нарисовать график с логарифмической осью y и линейной осью x на квадратной области графика в matplotlib. Я могу рисовать на квадратах как линейно-линейные, так и логарифмические графики, но используемый мной метод Axes.set_aspect(...)
не реализован для логарифмических графиков. Есть ли хороший обходной путь?
линейно-линейный сюжет на квадрате:
from pylab import *
x = linspace(1,10,1000)
y = sin(x)**2+0.5
plot (x,y)
ax = gca()
data_aspect = ax.get_data_ratio()
ax.set_aspect(1./data_aspect)
show()
логарифмический график на квадрате:
from pylab import *
x = linspace(1,10,1000)
y = sin(x)**2+0.5
plot (x,y)
ax = gca()
ax.set_yscale("log")
ax.set_xscale("log")
xmin,xmax = ax.get_xbound()
ymin,ymax = ax.get_ybound()
data_aspect = (log(ymax)-log(ymin))/(log(xmax)-log(xmin))
ax.set_aspect(1./data_aspect)
show()
Но когда я пробую это с логарифмическим графиком, я получаю не квадратную площадь, а предупреждение
from pylab import *
x = linspace(1,10,1000)
y = sin(x)**2+0.5
plot (x,y)
ax = gca()
ax.set_yscale("log")
xmin,xmax = ax.get_xbound()
ymin,ymax = ax.get_ybound()
data_aspect = (log(ymax)-log(ymin))/(xmax-xmin)
ax.set_aspect(1./data_aspect)
show()
выдает предупреждение:
axes.py:1173: UserWarning: aspect is not supported for Axes with xscale=linear, yscale=log
Есть ли хороший способ получить квадратно-логарифмические графики, несмотря на отсутствие поддержки в Axes.set_aspect
?