У меня есть диаграмма разброса данных pandas dataframe с различной интенсивностью (закодированная в холодные и теплые цвета), и я хотел преобразовать ее в непрерывный вывод в виде бина, похожий на тепловую карту.
Прочитав несколько вопросов, я увидел, что большинство людей используют методы, которые включают преобразование в график плотности или 2-мерную гистограмму, такую как этакод ниже (все еще использую мой фрейм данных sim
):
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from scipy.ndimage.filters import gaussian_filter
def myplot(x, y, s, bins=1000):
heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins)
heatmap = gaussian_filter(heatmap, sigma=s)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
return heatmap.T, extent
fig, axs = plt.subplots(2, 2)
# Generate some test data
sigmas = [0, 16, 32, 64]
for ax, s in zip(axs.flatten(), sigmas):
if s == 0:
ax.scatter(sim[0], sim[1], s=10, lw=0, c=sim["Choice"],cmap='coolwarm', label='Choice')
ax.set_title("Scatter plot")
else:
img, extent = myplot(sim[0], sim[1], s)
ax.imshow(img, extent=extent, origin='lower', cmap=cm.jet)
ax.set_title("Smoothing with $\sigma$ = %d" % s)
plt.show()
или:
import numpy as np
import matplotlib.pyplot as plt
plt.hist2d(sim[0],sim[1],weights=sim["Choice"],bins=100,cmap="coolwarm")
plt.show()
Как я мог вместо выполнения операции подсчета / суммирования выбрать другой способ вменения значения каждой ячейки / области на графике?
В этом случае я хочу взять среднее значение ближайших точек (значение 0, если рядом нет точек), но сказать, что мне нужен режим, или значение ближайшего соседа, или некоторая функция местоположения на графике с точкамии значение в каждой точке в качестве ввода. Как я могу сделать такую вещь?
Несколько строк примеров данных из моего sim
кадра данных:
0 1 Choice
0 -4.809010 -3.207281 0.078947
1 4.367746 -0.207146 0.421053
2 3.764409 4.295580 0.026316
3 -0.748293 -1.657736 0.263158
4 -3.867472 3.846792 0.421053
5 4.369304 0.823736 0.105263
6 4.181189 -0.651535 0.131579
7 -0.748293 -1.657736 0.500000
8 -5.766971 -0.585494 0.131579
9 2.498427 0.322623 0.210526
10 2.626870 4.064973 0.473684