нормализовать столбец, чтобы представить его как размер в точечной диаграмме - PullRequest
0 голосов
/ 12 мая 2018

У меня есть столбец с маленькими или довольно большими значениями в столбце данных: размеры. Я хотел бы использовать этот столбец как размер в разбросе, как показано здесь :

import matplotlib.pyplot as plt
import numpy as np

n = 50
x = np.random.randn(n)
y = x * np.random.randn(n)

fig, ax = plt.subplots(2, figsize=(6, 6))

ax[0].scatter(x, y, s=50)

sizes = (np.random.randn(n) * 8) ** 2
ax[1].scatter(x, y, s=sizes)

fig.show() 

Как лучше всего нормализовать колонку: размеры. Я попытался записать это, но размеры выглядят слишком похожими. Пропорции должны по-прежнему представлять пропорции в исходном столбце.

1 Ответ

0 голосов
/ 13 мая 2018

Это действительно зависит от того, какое сообщение вы хотите передать на свой график.

Если пропорции масштабированных размеров должны совпадать с исходными данными, то вы можете только линейно масштабировать размеры.Если вы разрешите нелинейное масштабирование, то вам нужно решить, где вы хотите сжать / развернуть входные данные, чтобы в этих областях размер круга для входного значения x не был вдвое больше размера для ввода x/2.

Я предполагаю, что самый большой размер, который вы хотите построить, равен 500, т. Е. max(sizes)=500, а максимальный размер ваших входных данных - 2000, но фактические значения на самом деле не имеют значения.

Iсоздал график с некоторыми параметрами.

enter image description here

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

Без каких-либо фактических данных трудно предсказать, какое масштабирование подойдет вам лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...