У меня есть файл, содержащий зарегистрированные события. Каждая запись имеет время и латентность. Я заинтересован в построении кумулятивной функции распределения задержек. Меня больше всего интересуют задержки хвоста, поэтому я хочу, чтобы график имел логарифмическую ось y. Меня интересуют задержки в следующих процентилях: 90-е, 99-е, 99,9-е, 99,99-е и 99,999-е. Вот мой код так далеко, что порождает регулярный CDF участок:Логарифмический график функции кумулятивного распределения в matplotlib
# retrieve event times and latencies from the file
times, latencies = read_in_data_from_file('myfile.csv')
# compute the CDF
cdfx = numpy.sort(latencies)
cdfy = numpy.linspace(1/len(latencies), 1.0, len(latencies))
# plot the CDF
plt.plot(cdfx, cdfy)
plt.show()
Я знаю, что я хочу сюжет выглядеть, но я изо всех сил, чтобы получить его. Я хочу, чтобы выглядеть следующим образом (я не генерировал этот сюжет):
Заставить ось х логарифмическая проста. Ось Y - это проблема, которая дает мне проблемы. Использование set_yscale('log')
не работает, потому что он хочет использовать полномочия 10. Я действительно хочу, чтобы ось y имела те же метки, что и этот график.
Как я могу получить свои данные в логарифмический сюжет, как этот?
EDIT:
Если я устанавливаю yscale в 'войти' и ylim на [0,1, 1], я получаю следующий сюжет:
Проблема заключается в том, что типичный логарифмическая шкала в наборе данных от 0 до 1 будет фокусироваться на значениях, близких к нулю. Вместо этого я хочу сфокусироваться на значениях, близких к 1.
Какие проблемы у вас есть с 'set_yscale ('symlog')'? – mziccard
Настройка позиций ярлыков - тоже совершенно другая история. Я полагаю, вы можете сделать масштаб логарифмическим по оси y (он работает, если у вас есть номер 0 или -ve, данные неверны), а затем смещать метки. –
Что вы имеете в виду, когда говорите, что ось оси y * «не работает» *? Не могли бы вы показать нам? Математически невозможно представить 0 в масштабе шкалы, поэтому первое значение должно быть либо замаскировано, либо обрезано до очень небольшого положительного числа. Вы можете контролировать это поведение, передавая либо '' mask'', либо '' clip'' в качестве параметра 'nonposy =' в 'ax.set_yscale()'. –