Это действительно зависит от того, какое сообщение вы хотите передать на свой график.
Если пропорции масштабированных размеров должны совпадать с исходными данными, то вы можете только линейно масштабировать размеры.Если вы разрешите нелинейное масштабирование, то вам нужно решить, где вы хотите сжать / развернуть входные данные, чтобы в этих областях размер круга для входного значения x
не был вдвое больше размера для ввода x/2
.
Я предполагаю, что самый большой размер, который вы хотите построить, равен 500, т. Е. max(sizes)=500
, а максимальный размер ваших входных данных - 2000, но фактические значения на самом деле не имеют значения.
Iсоздал график с некоторыми параметрами.

Для линейного масштабирования (зеленая кривая) вам просто нужно найти максимум ваших входных данных, а затем масштабировать с помощьюsizes=input_data*500/max_val
.
Вы также можете использовать различные варианты функции tanh
для масштабирования.Например, если вы хотите построить данные ниже некоторого порога с довольно маленькими кругами и выше этого порога с большими кругами, вы можете выбрать что-то вроде синей кривой.Вы можете сделать кривую намного круче, изменив tanh(x/500-2)*250+250
на tanh(x/50-20)*250+250
.
У решений tanh есть приятная особенность: очень большие входные значения по-прежнему отображаются на максимальный размер 500. Это не работает, еслиНапример, вы используете параболическое масштабирование, при котором размер круга будет неограниченным.Так, например, если ваши входные данные находятся в диапазоне от 0 до 10 ^ 6, но вы хотите визуализировать изменения только до 2000, и все значения, превышающие 2000, должны иметь одинаковый размер, то для этого вам может помочь масштабирование tanh.
Без каких-либо фактических данных трудно предсказать, какое масштабирование подойдет вам лучше.