Skip to content

Commit c4af841

Browse files
Added available change color surface
Added available change color point(dynamic)
1 parent 8a9de01 commit c4af841

File tree

6 files changed

+97
-134
lines changed

6 files changed

+97
-134
lines changed

Lab2/frontshow/Color.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,34 @@ class ColorFigure(Enum):
1717
MAGMA = "magma"
1818
CIVIDIS = "cividis"
1919
BINARY = "binary"
20-
SPRINT = "sprint"
20+
SPRING = "spring"
2121
SUMMER = "summer"
2222
WINTER = "winter"
2323
AUTUMN = "autumn"
2424
BONE = "bone"
2525

26+
colors_3DGraphic = {
27+
"plasma": ColorFigure.PLASMA.value,
28+
"viridis":ColorFigure.VIRIDIS.value,
29+
"inferno":ColorFigure.INFERNO.value,
30+
"magma":ColorFigure.MAGMA.value,
31+
"cividis":ColorFigure.CIVIDIS.value,
32+
"binary":ColorFigure.BINARY.value,
33+
"spring":ColorFigure.SPRING.value,
34+
"summer":ColorFigure.SUMMER.value,
35+
"winter":ColorFigure.WINTER.value,
36+
"autumn":ColorFigure.AUTUMN.value,
37+
"bone":ColorFigure.BONE.value
38+
}
39+
40+
colors_points = {
41+
"red": Color.RED.value,
42+
"green":Color.GREEN.value,
43+
"blue":Color.BLUE.value,
44+
"cyan":Color.CYAN.value,
45+
"yellow":Color.YELLOW.value,
46+
"pink":Color.PINK.value,
47+
"black":Color.BLACK.value,
48+
"white":Color.WHITE.value,
49+
"gray":Color.GRAY.value,
50+
}

Lab2/frontshow/animation.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
def animate(frame, arr,best_result=None, textReach=None, marker=None):
77
if len(arr) > frame:
88
size_point = gv.SIZE_POINT
9-
color = colors.Color.BLACK.value
9+
color = gv.COLOR_POINT
1010
if (len(arr) - 1 == frame):
1111
color = colors.Color.RED.value
12-
size_point = 50
12+
size_point = 40
1313
if(best_result!=None):
1414
gv.bestPointSet.append(omatpl.ax_3d.scatter(best_result[0], best_result[1], best_result[2], c=best_result[3], marker=best_result[4], s=best_result[5]))
1515
if (textReach != None):
@@ -25,8 +25,8 @@ def animate(frame, arr,best_result=None, textReach=None, marker=None):
2525
gv.extraScatter.append(omatpl.ax_3d.scatter(arr[frame][0], arr[frame][1], point_z, c=color, marker=marker, s=size_point, zorder=1))
2626
else:
2727
gv.scatter_points.append(omatpl.ax_3d.scatter(arr[frame][0], arr[frame][1], point_z, c=color, marker=marker, s=size_point,zorder=1))
28-
29-
if(len(gv.scatter_points)>15 and len(arr)-2 > frame):
28+
# If you, don't want to delete point , comment this code
29+
if len(gv.scatter_points)>15 and len(arr)-2 > frame:
3030
random_countForDel = random.randint(2, 5)
3131
for i in range(0,random_countForDel):
3232
randomPos = random.randint(0,len(gv.scatter_points)-2)

Lab2/frontshow/methods.py

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import outer_imports.imports_tkinter as otk
22
import numpy as np
33
from outer_imports.matplotlib import fig_3d
4-
from Lab2.frontshow.Color import ColorFigure
4+
from Lab2.frontshow.Color import ColorFigure, colors_3DGraphic, colors_points
55
import global_variable as gv
66
from Lab2.setFunction import chooseFunc
77

8-
def buildBaseFunction(ax_3d):
8+
def buildBaseFunction(ax_3d,colorGraphic=ColorFigure.WINTER.value):
9+
if(len(gv.scatter_points) >0 or len(gv.bestPointSet)> 0 or len(gv.extraScatter) > 0):
10+
otk.messagebox.showinfo("Warning", "Clear points!")
11+
return
912
ax_3d.clear()
1013

1114
ax_3d.set_title("3D Matplotlib Plot")
@@ -23,12 +26,15 @@ def buildBaseFunction(ax_3d):
2326
X, Y = np.meshgrid(gv.x_data, gv.y_data)
2427
Z = gv.current_function(X, Y)
2528
#plot_wireframe
26-
ax_3d.plot_surface(X, Y, Z, cmap=ColorFigure.WINTER.value,alpha=0.8,rstride=1, cstride=1,zorder=0)
29+
ax_3d.plot_surface(X, Y, Z, cmap=colorGraphic,alpha=0.8,rstride=1, cstride=1,zorder=0)
2730
gv.canvas_3d.draw()
2831

2932
def selectFunc(event,ax_3d,combo,lab,textField):
3033
try:
3134
if len(textField.get()) > 0 and textField.get()!='' and float(textField.get())!=0:
35+
#if(gv.COLOR_3DGRAPHIC == None):
36+
#otk.messagebox.showerror("Error", "Choose color")
37+
#return
3238
selection = combo.get()
3339
gv.STEP = float(textField.get())
3440
if selection in chooseFunc:
@@ -40,13 +46,37 @@ def selectFunc(event,ax_3d,combo,lab,textField):
4046
gv.START = chooseFunc[selection]['from']
4147
gv.END = chooseFunc[selection]['to']
4248

43-
buildBaseFunction(ax_3d)
49+
buildBaseFunction(ax_3d,gv.COLOR_3DGRAPHIC)
4450
lab.config(text="Функция:" + selection)
4551
else:
4652
otk.messagebox.showerror("Error", "Invalid input. Please enter numeric values step.")
4753
except ValueError:
4854
otk.messagebox.showerror("Error", "Invalid input. Please enter numeric values.")
4955

56+
def selectColor(event,combo,ax_3d):
57+
try:
58+
selection = combo.get()
59+
if gv.COLOR_3DGRAPHIC == None:
60+
gv.COLOR_3DGRAPHIC = colors_3DGraphic[selection]
61+
else:
62+
gv.COLOR_3DGRAPHIC = colors_3DGraphic[selection]
63+
buildBaseFunction(ax_3d,gv.COLOR_3DGRAPHIC)
64+
except ValueError:
65+
otk.messagebox.showerror("Error", "Problem with color graphic. Send message admin")
66+
67+
def selectColorPoints(event,combo):
68+
try:
69+
selection = combo.get()
70+
gv.COLOR_POINT = colors_points[selection]
71+
# If you, don't want to delete point and different color for every run, comment this code
72+
if(len(gv.scatter_points) >0):
73+
for point in gv.scatter_points:
74+
point.set_facecolors(gv.COLOR_POINT)
75+
gv.canvas_3d.draw()
76+
77+
except ValueError:
78+
otk.messagebox.showerror("Error", "Problem with color point. Send message admin")
79+
5080
def save_plot():
5181
try:
5282
file_path = otk.filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("PNG files", "*.png")])

Lab2/global_variable.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
SPEED = 30
66
SIZE_POINT = 20
7-
7+
COLOR_3DGRAPHIC = None
8+
COLOR_POINT = "black"
89
current_function = None
910
x_data = []
1011
y_data = []

Lab2/main.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
createTab_Genetic, createTab_Swarm,
88
createTab_Bees, createTab_Bacterial, createTab_ImmuneSystem, createTab_Hybrid)
99

10-
from frontshow.methods import save_plot,close_application,selectFunc,clearPoints
10+
from frontshow.methods import save_plot, close_application, selectFunc, clearPoints, selectColor, selectColorPoints
1111
from frontshow.calc_algorithm.gradientDescentShow import callGradient_DrawPoint
1212
from frontshow.calc_algorithm.simpleMethodShow import call_simplex_method
1313
from frontshow.calc_algorithm.geneticAlgorithmShow import call_geneticsAlgorithm
@@ -78,6 +78,36 @@
7878
comboBoxFunc.grid(row=4,column=1,padx=5,pady=5,rowspan=1,columnspan=3,sticky="nsew")
7979
textFieldStep.grid(row=2, column=1,padx=5, pady=5,rowspan=1,columnspan=3,sticky="nsew")
8080

81+
comboBoxColorGraphic = ttk.Combobox(root, values=[
82+
"plasma",
83+
"viridis",
84+
"inferno",
85+
"magma",
86+
"cividis",
87+
"binary",
88+
"spring",
89+
"summer",
90+
"winter",
91+
"autumn",
92+
"bone"], state="readonly")
93+
comboBoxColorGraphic.bind("<<ComboboxSelected>>",lambda event, cb=comboBoxColorGraphic: selectColor(event, cb,ax_3d))
94+
comboBoxColorGraphic.grid(row=1, column=0, padx=90, pady=5, sticky="w")
95+
createLabel.placement_label(root, "Цвет графика", 1, 0, 0, 1, 1, 5,sticky="w")
96+
97+
comboBoxColorPoints = ttk.Combobox(root, values=[
98+
"red",
99+
"green",
100+
"blue",
101+
"cyan",
102+
"yellow",
103+
"pink",
104+
"black",
105+
"white",
106+
"gray"], state="readonly")
107+
comboBoxColorPoints.bind("<<ComboboxSelected>>",
108+
lambda event, cb=comboBoxColorPoints: selectColorPoints(event, cb))
109+
comboBoxColorPoints.grid(row=1, column=0, padx=5, pady=5, sticky="e")
110+
createLabel.placement_label(root, "Цвет точек", 1, 0, 150, 1, 1, 5, sticky="e")
81111

82112
clear_btn = ttk.Button(root, text="Очистить точки с графика", command=clearPoints)
83113
clear_btn.grid(row=2, column=0, columnspan=3, padx=5, pady=5, sticky="nsew")

Lab2/temp.py

Lines changed: 0 additions & 123 deletions
This file was deleted.

0 commit comments

Comments
 (0)