@@ -44,15 +44,26 @@ def derivative(func, x, h=1e-5):
4444# Initialize the Plotly figure
4545fig = go .Figure ()
4646
47- # Adjust padding for final layout
48- pad = min (np .abs (np .min (f_vals )), np .abs (np .max (f_vals ))) + (max (np .abs (np .min (f_vals )), np .abs (np .max (f_vals ))) // 20 )
47+ # Calculate y-axis padding
48+ f_range = np .max (f_vals ) - np .min (f_vals )
49+ # 5% of range or at least 0.1
50+ pad = max (f_range * 0.05 , 0.1 )
4951
5052# Set the final y-axis range with padding
5153y_min = np .min (f_vals ) - pad
52- y_max = np .max (f_vals ) + pad
54+ # No padding on top to avoid cutting off curve
55+ y_max = np .max (f_vals )
56+
57+ # Calculate x-axis padding
58+ x_range_val = x_range [1 ] - x_range [0 ]
59+ x_pad = max (x_range_val * 0.05 , 0.1 )
60+
61+ # Set the final x-axis range with padding
62+ x_min = x_range [0 ] - x_pad
63+ x_max = x_range [1 ] + x_pad
5364
5465# Vertical line at x=0 (y-axis)
55- if x_range [ 0 ] < 0 < x_range [ 1 ] :
66+ if x_min < 0 < x_max :
5667 fig .add_trace (go .Scatter (
5768 x = [0 , 0 ],
5869 y = [y_min , y_max ],
@@ -64,7 +75,7 @@ def derivative(func, x, h=1e-5):
6475# Horizontal line at y=0 (x-axis)
6576if y_min < 0 < y_max :
6677 fig .add_trace (go .Scatter (
67- x = [x_range [ 0 ], x_range [ 1 ] ],
78+ x = [x_min , x_max ],
6879 y = [0 , 0 ],
6980 mode = 'lines' ,
7081 line = dict (color = 'silver' , width = 2 ),
@@ -101,12 +112,12 @@ def derivative(func, x, h=1e-5):
101112 frame_data = []
102113
103114 # Conditionally add vertical line at x=0
104- if x_range [ 0 ] < 0 < x_range [ 1 ] :
115+ if x_min < 0 < x_max :
105116 frame_data .append (go .Scatter (x = [0 , 0 ], y = [y_min , y_max ]))
106117
107118 # Conditionally add horizontal line at y=0
108119 if y_min < 0 < y_max :
109- frame_data .append (go .Scatter (x = [x_range [ 0 ], x_range [ 1 ] ]))
120+ frame_data .append (go .Scatter (x = [x_min , x_max ], y = [ 0 , 0 ]))
110121
111122 # Placeholder for the function trace (remains unchanged)
112123 frame_data .append (go .Scatter ())
@@ -149,7 +160,7 @@ def derivative(func, x, h=1e-5):
149160fig .update_layout (
150161 xaxis_title = 'x-axis' ,
151162 yaxis_title = 'y-axis' ,
152- xaxis = dict (range = [x_range [ 0 ], x_range [ 1 ] ], fixedrange = True ),
163+ xaxis = dict (range = [x_min , x_max ], fixedrange = True ),
153164 yaxis = dict (range = [y_min , y_max ], fixedrange = True ),
154165 sliders = sliders ,
155166 uirevision = 'static' ,
0 commit comments