Корректировка значений столбцов, чтобы избежать перекрытия диапазонов в Панд

#python #pandas #numpy

#питон #панды #тупица

Вопрос:

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

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

До сих пор я рассчитывал положение краев метки и использую их в качестве диапазонов, которые затем использую для обнаружения перекрытия в исходном макете:

 def determine_y_offsets(df, format_df, row_name, column):  bottom_1 = format_df.loc[row_name, (column, 'label bottom')]  top_1 = format_df.loc[row_name, (column, 'label top')]  for c in df.columns:  if c != column:  bottom_2 = format_df.loc[row_name, (c, 'label bottom')]  top_2 = format_df.loc[row_name, (c, 'label top')]  range_overlaps = ranges_overlap((bottom_1, top_1), (bottom_2, top_2))  if range_overlaps:  some_function_to_change_offset()  

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

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