Сделать гистограмму 2d, если определенное значение выше или ниже среднего? - PullRequest
0 голосов
/ 05 октября 2019

Я сделал двумерную гистограмму из двух переменных (x и y), и каждая из них - это длинные, одномерные массивы. Затем я вычислил среднее значение x в каждой ячейке и хочу, чтобы цветная полоса показывала, насколько каждая величина x выше или ниже средней в соответствующей ячейке.

До сих пор я пытался создать новый массив z, содержащий значения того, насколько далеко выше / ниже среднего находится каждый x. Когда я пытаюсь использовать это с pcolormesh, я сталкиваюсь с проблемами, что это не двумерный массив. Я также попытался решить эту проблему, следуя решению этой проблемы ( Использование pcolormesh с 3 одномерными массивами в python ). Длина каждого массива (x, y и z) в этом случае одинакова, и для каждого значения x есть соответствующее значение z.

Моя общая цель - сделать так, чтобы цветовая полоса не зависела от количества, а чтобыпусть он покажет, насколько выше / ниже среднего каждое значение x от среднего значения x корзины. Я подозреваю, что может иметь больше смысла просто строить x против z, но я не думаю, что это решило бы мою проблему с цветными полосами.

1 Ответ

0 голосов
/ 05 октября 2019

Как упоминал LoneWanderer, будет полезен пример кода;однако позвольте мне попытаться сделать то, что вы хотите.

import numpy as np
import matplotlib.pyplot as plt

N = 10000
x = np.random.uniform(0, 1, N)
y = np.random.uniform(0, 1, N) # Generating x and y data (you will already have this)

# Histogram data
xbins = np.linspace(0, 1, 100)
ybins = np.linspace(0, 1, 100)
hdata, xedges, yedged = np.histogram2d(x, y, bins=(xbins, ybins))

# compute the histogram average value and the difference
hdataMean = np.mean(hdata)
hdataRelDifference = (hdata - hdataMean) / hdataMean

# Plot the relative difference
fig, ax = plt.subplots(1, 1)
cax = ax.imshow(hdataRelDifference)
fig.colorbar(cax, ax=ax)

Если это не то, что вы хотели, надеюсь, здесь достаточно частей, чтобы приспособить их к вашим потребностям.

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