You can see in my code below that I am creating a list of strings that essentially forms as many circles defined by the planes
list. The issue is associated with the hover
list. Essentially, if click_x
and click_y
are within a certain region defined by the strings then it should replace all the strings within that region but for some reason text.replace(...)
isn't doing anything and by that I mean after "replacing", the hover
list is still the same. All help is appreciated.
Also I can't use np.where since I get a TypeError for some reason.
import numpy as np
planes = [2, 3, 4, 5]
edge = planes[-1]
x = np.linspace(-edge, edge, 50)
y = np.linspace(-edge, edge, 50)
regions = []
hover = []
# Normal Display
for i in x:
row = []
text_row = []
for j in y:
# TODO: Make what_region function
if np.sqrt(i ** 2 + j ** 2) < planes[0]:
row.append(7) # <- Arbitrary number to adjust color
text_row.append('Region 1')
if np.sqrt(i ** 2 + j ** 2) > planes[-1]:
row.append(5) # <- Arbitrary number to adjust color
text_row.append('Region {}'.format(len(planes) + 1))
for k in range(len(planes) - 1):
if planes[k] < np.sqrt(i ** 2 + j ** 2) < planes[k + 1]:
row.append(k * 3) # <- Arbitrary number to adjust color
text_row.append('Region {}'.format(k + 2))
regions.append(row)
hover.append(text_row)
# indices = np.where(np.array(hover) == "Region 1")
# for a in range(len(indices[0])):
# hover[indices[0][a]][indices[1][a]] = ("New Region")
click_x = np.random.uniform(-planes[-1], planes[-1])
click_y = np.random.uniform(-planes[-1], planes[-1])
# Change graph on Click TODO: Not filling region correctly (MUST FIX)
if np.sqrt(click_x ** 2 + click_y ** 2) < planes[0]:
print('1', True)
for row_ in hover:
for text in row_:
print(text)
text.replace('Region 1', 'New Region')
if np.sqrt(click_x ** 2 + click_y ** 2) > planes[-1]:
print('2', True)
for row_ in hover:
for text in row_:
print(text)
text.replace('Region {}'.format(len(planes)+1), 'Newer Region')
for k in range(len(planes) - 1):
if planes[k] < np.sqrt(click_x ** 2 + click_y ** 2) < planes[k + 1]:
print('3', True)
for row_ in hover:
for text in row_:
print(text)
text.replace('Region {}'.format(k+2), 'Newest Region')
print(hover)