#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()
Я попытался изменить позиции, если диапазоны перекрываются, но, поскольку каждый из них должен сравниваться со всеми другими каждый раз, когда происходит корректировка, это приводит к беспорядочным результатам. Дополнительная проблема заключается в том, что метки должны оставаться в пределах графика, поэтому есть жесткий верхний и нижний края.
Я полагаю, что есть гораздо лучшее решение для устранения подобных перекрытий диапазонов, и я просто еще не нашел его.