Issue
I have 2d array
I wanted to divide 5 values in this array such that it should be kind of structure like sunburst or pie chart.
I will be very thankful if you could provide python code or idea to do so, any related suggestions are also welcome. Thank you!
Solution
This may be the way that you can divide your square grid according to percentages into five types. While I am not sure how to do it in a circular way.
mat = np.reshape(list(np.random.choice(a=[i for i in range(1,6)], size=30*30, p=[0.326 ,0.02 ,0.11,0.053,0.491])), (30,30))
mat2= [[0 for col in range(30)] for row in range(30)]
lst=[0,0,0,0,0]
for i in range(30):
for j in range(30):
lst[mat[i][j]-1] += 1
print(lst)
lst2=[0,0,0,0,0]
for i in range(len(lst)):
lst2[i] = [lst[i], i+1]
print(lst2)
print(sorted(lst2))
lst3=sorted(lst2)
def action(n,v):
count = n
for j in range(len(mat2)//2,-1,-1):
for i in range(0,len(mat2)//2):
if mat2[i][j]==0 and count!=0:
mat2[i][j] = v
count -= 1
for j in range(len(mat2)//2):
for i in range(len(mat2)//2,len(mat2)):
if mat2[i][j]==0 and count!=0:
mat2[i][j] = v
count -= 1
for j in range(len(mat2)//2,len(mat2)):
for i in range(len(mat2)//2,len(mat2)):
if mat2[i][j]==0 and count!=0:
mat2[i][j] = v
count -= 1
for i in range(len(mat2)//2,-1,-1):
for j in range(len(mat2)//2,len(mat2),-1):
if mat2[i][j]==0 and count!=0:
mat2[i][j] = v
count -= 1
for i in range(len(mat2)):
for j in range(len(mat2)):
if mat2[i][j]==0 and count != 0:
mat2[i][j]=v
count-=1
for val in lst3:
action(val[0],val[1])
for i in mat2:
print(i)
Answered By - Dvarkesh Answer Checked By - Dawn Plyler (PHPFixing Volunteer)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.