Моя цель — создать диаграмму рассеяния на основе двумерной гистограммы, где, если интервал имеет счетчик n, то в границах интервала случайным образом генерируются n точек. Примерно так:
Однако у меня возникла проблема с созданием точек внутри границ интервала для более равномерного распределения. Например, следующая тепловая карта не создает диаграмму рассеяния, какой она должна быть.
2D-гистограмма:
Я добавил код и вызовы функций ниже . Как я могу исправить свой код, чтобы он правильно генерировал баллы?
def repopulateScatterHelper(x,y,m):
"""
generate a random point within bounds
"""
# compute x and y axis min and max
maxX = max(xedges) #the max x value from edges
maxY = max(yedges)
minX = min(xedges)
minY = min(yedges)
# compute bin boundaries
x1 = float(x)/m * (maxX-minX) + minX
x2 = float(x+1)/m *(maxX-minX) + minX
y1 = float(y)/m * (maxY-minY) + minY
y2 = float(y+1)/m * (maxY-minY) + minY
# generate random point within bin boundaries
the_x = uniform(x1, x2)
the_y = uniform(y1, y2)
return the_x, the_y
# enddef
def repopulateScatter(H, m):
"""
@params
H - 2D array of counts
m - number of bins along each axis
@returns
new_x, new_y - Generated corresponding x and y coordinates of points
"""
new_x = []
new_y = []
for i in range(0,m): # rows
for j in range(0,m): #columns
if H[i][j] > 0: # if count is greater than zero, generate points
for point in range(0, int(H[i][j])):
x_i, y_i = repopulateScatterHelper(i,j,m)
new_x.append(x_i)
new_y.append(y_i)
#endfor
#endif
#endfor
#endfor
return new_x,new_y
#enddef
def plotHistToScatter(new_x, new_y):
"""
new_x, new_y - x,y coordinates to plot
"""
new_x = np.array(new_x)
new_y = np.array(new_y)
# plot data points
fig, ax = plt.subplots()
ax.scatter(new_x,new_y)
# add LOBF to plot - https://www.statology.org/line-of-best-fit-python/
a, b = np.polyfit(new_x,new_y, 1)
a = float(a)
plt.plot(new_x, a*new_x+b, color = "red")
print("DP LOBF:", a , "*(x) +" , b)
# label the plot
plt.xlabel(xAxisLabel)
plt.ylabel(yAxisLabel)
plt.title("heatmap to scatterplot for " + xAxisLabel + ' vs ' + yAxisLabel + "epsilon =" + str(epsilon))
plt.show()
#enddef
Моя цель — создать диаграмму рассеяния на основе двумерной гистограммы, где, если интервал имеет счетчик n, то в границах интервала случайным образом генерируются n точек. Примерно так: [img]https://i.sstatic.net/b7wJ4.png[/img]
Однако у меня возникла проблема с созданием точек внутри границ интервала для более равномерного распределения. Например, следующая тепловая карта не создает диаграмму рассеяния, какой она должна быть. 2D-гистограмма: [img]https://i.sstatic.net/20Zji.png[/img]
Я добавил код и вызовы функций ниже . Как я могу исправить свой код, чтобы он правильно генерировал баллы? [code]def repopulateScatterHelper(x,y,m): """ generate a random point within bounds """ # compute x and y axis min and max maxX = max(xedges) #the max x value from edges maxY = max(yedges)
# generate random point within bin boundaries the_x = uniform(x1, x2) the_y = uniform(y1, y2) return the_x, the_y # enddef
def repopulateScatter(H, m): """ @params H - 2D array of counts m - number of bins along each axis @returns new_x, new_y - Generated corresponding x and y coordinates of points
""" new_x = [] new_y = [] for i in range(0,m): # rows for j in range(0,m): #columns if H[i][j] > 0: # if count is greater than zero, generate points for point in range(0, int(H[i][j])): x_i, y_i = repopulateScatterHelper(i,j,m) new_x.append(x_i) new_y.append(y_i) #endfor #endif #endfor #endfor
Я пытаюсь создать случайные точки на поверхности сферы, используя numpy. Я просмотрел пост, в котором объясняется равномерное распределение здесь. Однако нужны идеи, как генерировать точки только на поверхности сферы. У меня есть координаты (x, y,...
Я потратил некоторое время на поиск в Интернете ответа на этот вопрос, и я тоже пытался искать ответ повсюду, но я думаю, что у меня нет правильной терминологии... Пожалуйста, извините меня, если это является дубликатом какой-то известной проблемы,...
В чем разница в приведенном ниже коде между созданием экземпляра круга как типа Shape и прямоугольника как типа Rectangle?
Shape — это базовый класс, Circle и Rectangle являются производными от Shape. Каждый экземпляр комментируется тем, что...