График с меньшим количеством маркеров, чем точки данных (или лучший способ построения CDF?)

StackOverflow https://stackoverflow.com/questions/2040306

Вопрос

Я планирую кумулятивные функции распределения с большим количеством точек данных. Я планирую несколько строк на том же участке, которые идентифицируются с маркерами, как это будет напечатано черно -белым. Что я хотел бы, чтобы маркеры равномерно расположены в X-измечении. Я получаю один маркер по точке данных (и, учитывая количество точек, они все перекрываются)

Я не уверен, что это мое понимание того, как хорошо построить, или просто отсутствие понимания matplotlib. Я не могу найти настройку «маркерной частоты».

Легкое решение для одной строки - это взять каждое новое значение из линии и использовать его в качестве отдельной строки с Linestyle = '', но я хотел бы, чтобы маркеры были вертикально выровнены, а разные x массивы имеют разные длина

# in reality, many thousands of values
x_example = [ 567, 460, 66, 1034, 275, 26, 628, 99, 287, 157, 705, 421, 1093, \ 
     139, 204, 14, 240, 179, 94, 139, 645, 670, 47, 520, 891, 450, 56, 964,   \
     1728, 99, 277, 356, 1628, 745, 364, 88, 112, 810, 816, 523, 401, 89,     \ 
     278, 917, 370, 53, 39, 90, 853, 356 ] 
x = sort(x_example)
y = linspace(0,1,len(x))

ax = subplot(1,1,1)
plots[w] = ax.plot(x,y, marker='o')
Это было полезно?

Решение

Ты можешь сделать plot(x,y,marker='o',markevery=5) Чтобы отметить каждый пятый пункт, но я не думаю, что существует какая-либо встроенная поддержка для установки отметок с даже интервалами. Вы могли бы выбрать места x, где вы хотите отметки, используйте например, numpy.searchsorted Чтобы обнаружить, какие данные указывают, местоположения падают между и затем интерполируют между соседними точками, чтобы найти координаты Y.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top