Создание сетки осей вероятности / частоты (нерегулярно расположенных) с помощью Matplotlib

Я пытаюсь создать график частотной кривой, и мне трудно манипулировать осью, чтобы получить график, который я хочу.

Вот пример желаемой сетки / графика, который я пытаюсь создать:

Frequency Curve Example

Вот что мне удалось создать с помощью matplotlib:

Current Matplotlib Result

Чтобы создать сетку на этом графике, я использовал следующий код:

m1 = pd.np.arange(.2, 1, .1)
m2 = pd.np.arange(1, 2, .2)
m3 = pd.np.arange(2, 10, 2)
m4 = pd.np.arange(2, 20, 1)
m5 = pd.np.arange(20, 80, 2)
m6 = pd.np.arange(80, 98, 1)
xTick_minor = pd.np.concatenate((m1,m2,m3,m4, m5, m6))
xTick_major = pd.np.array([.2,.5,1,2,5,10,20,30,40,50,60,70,80,90,95,98])

m1 = range(0, 250, 50)
m2 = range(250, 500, 10)
m3 = range(500, 1000, 20)
m4 = range(1000, 5000, 100)
m5 = range(5000, 10000, 200)
m6 = range(10000, 50000, 1000)

yTick_minor = pd.np.concatenate((m1,m2,m3,m4,m5,m6))
yTick_major = pd.np.array([250, 300, 350, 400, 450, 500, 600, 700, 800, 900, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 6000, 7000, 8000, 9000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000])

axes.invert_xaxis()
axes.set_ylabel('Discharge in CFS')
axes.set_xlabel('Exceedance Probability')
axes.xaxis.set_major_formatter(FormatStrFormatter('%3.1f'))
axes.set_xticks(xTick_major)
axes.set_xticks(xTick_minor, minor=True)
axes.grid(which='major', alpha=0.7)
axes.grid(which='minor', alpha=0.4)

axes.set_yticks(yTick_major)
axes.set_yticks(yTick_minor, minor=True)

Сетка верна, но я хочу сейчас Убедитесь, что на дисплее больше разнесены диапазоны низкой вероятности, и то же самое для низких значений разряда (ось Y). По сути, я хочу контролировать интервал между тиками , а не сам интервал между тиками, чтобы диапазон от 0,2 до 0,5 отображал аналогично диапазону от 40 до 50 на оси х, как требуется сетка показывает.

Можно ли это сделать в matplotlib? Я прочитал документацию по tick_params и локаторам, но, похоже, ни один из них не касается такого рода форматирования осей.

9
задан Nelz11 7 July 2015 в 16:55
поделиться