Skip to content

Commit 8606dc5

Browse files
Start formatting plots
1 parent 4e4af9f commit 8606dc5

File tree

8 files changed

+353
-83
lines changed

8 files changed

+353
-83
lines changed

docs/examples/as3600.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@
437437
"name": "python",
438438
"nbconvert_exporter": "python",
439439
"pygments_lexer": "ipython3",
440-
"version": "3.11.4"
440+
"version": "3.12.7"
441441
},
442442
"vscode": {
443443
"interpreter": {

docs/examples/biaxial_bending.ipynb

+48-14
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,13 @@
149149
"metadata": {},
150150
"outputs": [],
151151
"source": [
152-
"bb_res.plot_diagram()"
152+
"bb_res.plot_diagram(\n",
153+
" eng=True,\n",
154+
" n_scale=1e-3,\n",
155+
" m_scale=1e-6,\n",
156+
" n_unit=\"kN\",\n",
157+
" m_unit=\"kN.m\",\n",
158+
")"
153159
]
154160
},
155161
{
@@ -168,7 +174,13 @@
168174
"outputs": [],
169175
"source": [
170176
"bb_res = conc_sec.biaxial_bending_diagram(n=1000e3, n_points=24, progress_bar=False)\n",
171-
"bb_res.plot_diagram()"
177+
"bb_res.plot_diagram(\n",
178+
" eng=True,\n",
179+
" n_scale=1e-3,\n",
180+
" m_scale=1e-6,\n",
181+
" n_unit=\"kN\",\n",
182+
" m_unit=\"kN.m\",\n",
183+
")"
172184
]
173185
},
174186
{
@@ -189,8 +201,8 @@
189201
"source": [
190202
"mi_x = conc_sec.moment_interaction_diagram(progress_bar=False)\n",
191203
"mi_y = conc_sec.moment_interaction_diagram(theta=np.pi / 2, progress_bar=False)\n",
192-
"mi_x.plot_diagram()\n",
193-
"mi_y.plot_diagram(moment=\"m_y\")\n",
204+
"mi_x.plot_diagram(eng=True)\n",
205+
"mi_y.plot_diagram(moment=\"m_y\", eng=True)\n",
194206
"print(f\"Decompression point for M_x is N = {mi_x.results[1].n / 1e3:.2f} kN\")\n",
195207
"print(f\"Decompression point for M_y is N = {mi_y.results[1].n / 1e3:.2f} kN\")"
196208
]
@@ -232,7 +244,14 @@
232244
"metadata": {},
233245
"outputs": [],
234246
"source": [
235-
"BiaxialBendingResults.plot_multiple_diagrams_3d(biaxial_results)"
247+
"BiaxialBendingResults.plot_multiple_diagrams_3d(\n",
248+
" biaxial_results,\n",
249+
" eng=True,\n",
250+
" n_scale=1e-3,\n",
251+
" m_scale=1e-6,\n",
252+
" n_unit=\"kN\",\n",
253+
" m_unit=\"kN.m\",\n",
254+
")"
236255
]
237256
},
238257
{
@@ -250,7 +269,15 @@
250269
"metadata": {},
251270
"outputs": [],
252271
"source": [
253-
"BiaxialBendingResults.plot_multiple_diagrams_2d(biaxial_results, fmt=\"o-\")"
272+
"BiaxialBendingResults.plot_multiple_diagrams_2d(\n",
273+
" biaxial_results,\n",
274+
" fmt=\"o-\",\n",
275+
" eng=True,\n",
276+
" n_scale=1e-3,\n",
277+
" m_scale=1e-6,\n",
278+
" n_unit=\"kN\",\n",
279+
" m_unit=\"kN.m\",\n",
280+
")"
254281
]
255282
},
256283
{
@@ -268,17 +295,24 @@
268295
"metadata": {},
269296
"outputs": [],
270297
"source": [
271-
"import matplotlib.pyplot as plt\n",
272-
"\n",
273-
"labels = [f\"N = {bb_res.n / 1e3:.0f} kN\" for bb_rs in biaxial_results[::2]]\n",
298+
"labels = [f\"N = {bb_res.n / 1e3:.0f} kN\" for bb_res in biaxial_results[::2]]\n",
274299
"\n",
275300
"ax = BiaxialBendingResults.plot_multiple_diagrams_2d(\n",
276-
" biaxial_results[::2], fmt=\"-\", labels=labels, render=False\n",
277-
")\n",
278-
"ax.set_xlabel(\"Bending Moment $M_x$ [kN.m]\")\n",
279-
"ax.set_ylabel(\"Bending Moment $M_y$ [kN.m]\")\n",
280-
"plt.show()"
301+
" biaxial_results[::2],\n",
302+
" fmt=\"-\",\n",
303+
" labels=labels,\n",
304+
" m_scale=1e-6,\n",
305+
" m_unit=\"kN.m\",\n",
306+
")"
281307
]
308+
},
309+
{
310+
"cell_type": "code",
311+
"execution_count": null,
312+
"id": "23",
313+
"metadata": {},
314+
"outputs": [],
315+
"source": []
282316
}
283317
],
284318
"metadata": {

docs/examples/cracked_properties.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@
256256
"name": "python",
257257
"nbconvert_exporter": "python",
258258
"pygments_lexer": "ipython3",
259-
"version": "3.11.4"
259+
"version": "3.12.7"
260260
}
261261
},
262262
"nbformat": 4,

docs/examples/moment_curvature.ipynb

+18-5
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,12 @@
256256
"outputs": [],
257257
"source": [
258258
"MomentCurvatureResults.plot_multiple_results(\n",
259-
" moment_curvature_results=moment_curvature_results, labels=labels, fmt=\"-\"\n",
259+
" moment_curvature_results=moment_curvature_results,\n",
260+
" labels=labels,\n",
261+
" fmt=\"-\",\n",
262+
" eng=True,\n",
263+
" m_scale=1e-6,\n",
264+
" m_unit=\"kN.m\",\n",
260265
")"
261266
]
262267
},
@@ -294,7 +299,12 @@
294299
"outputs": [],
295300
"source": [
296301
"MomentCurvatureResults.plot_multiple_results(\n",
297-
" moment_curvature_results=moment_curvature_results[1:], labels=labels[1:], fmt=\"-\"\n",
302+
" moment_curvature_results=moment_curvature_results[1:],\n",
303+
" labels=labels[1:],\n",
304+
" fmt=\"-\",\n",
305+
" eng=True,\n",
306+
" m_scale=1e-6,\n",
307+
" m_unit=\"kN.m\",\n",
298308
")"
299309
]
300310
},
@@ -440,7 +450,7 @@
440450
"metadata": {},
441451
"outputs": [],
442452
"source": [
443-
"res1.plot_results(fmt=\"x-\")\n",
453+
"res1.plot_results()\n",
444454
"print(f\"Number of calculations = {len(res1.kappa)}\")\n",
445455
"print(f\"Failure curvature = {res1.kappa[-1]:.4e}\")"
446456
]
@@ -479,7 +489,7 @@
479489
"metadata": {},
480490
"outputs": [],
481491
"source": [
482-
"res2.plot_results(fmt=\"x-\")\n",
492+
"res2.plot_results()\n",
483493
"print(f\"Number of calculations = {len(res2.kappa)}\")\n",
484494
"print(f\"Failure curvature = {res2.kappa[-1]:.4e}\")"
485495
]
@@ -529,7 +539,7 @@
529539
"metadata": {},
530540
"outputs": [],
531541
"source": [
532-
"res3.plot_results(fmt=\"x-\")\n",
542+
"res3.plot_results()\n",
533543
"print(f\"Number of calculations = {len(res3.kappa)}\")\n",
534544
"print(f\"Failure curvature = {res3.kappa[-1]:.4e}\")"
535545
]
@@ -670,6 +680,9 @@
670680
" moment_curvature_results=[res_n0, res_n1, res_nt],\n",
671681
" labels=[\"$N=0$ kN\", \"$N=0.2f'cA_g$\", \"$N=-1000$ kN\"],\n",
672682
" fmt=\"-\",\n",
683+
" eng=True,\n",
684+
" m_scale=1e-6,\n",
685+
" m_unit=\"kN.m\",\n",
673686
")"
674687
]
675688
},

docs/examples/moment_interaction.ipynb

+28-4
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@
148148
"metadata": {},
149149
"outputs": [],
150150
"source": [
151-
"mi_res.plot_diagram()"
151+
"mi_res.plot_diagram(eng=True, n_unit=\"N\", m_unit=\"N.mm\")"
152152
]
153153
},
154154
{
@@ -167,7 +167,13 @@
167167
"outputs": [],
168168
"source": [
169169
"mi_res = conc_sec.moment_interaction_diagram(theta=np.pi / 2, progress_bar=False)\n",
170-
"mi_res.plot_diagram(moment=\"m_y\")"
170+
"mi_res.plot_diagram(\n",
171+
" moment=\"m_y\",\n",
172+
" n_scale=1e-3,\n",
173+
" m_scale=1e-6,\n",
174+
" n_unit=\"kN\",\n",
175+
" m_unit=\"kN.m\",\n",
176+
")"
171177
]
172178
},
173179
{
@@ -222,7 +228,13 @@
222228
"source": [
223229
"# plot all the diagrams on one image\n",
224230
"MomentInteractionResults.plot_multiple_diagrams(\n",
225-
" moment_interaction_results=mi_results, labels=labels, fmt=\"-\"\n",
231+
" moment_interaction_results=mi_results,\n",
232+
" labels=labels,\n",
233+
" fmt=\"-\",\n",
234+
" n_scale=1e-3,\n",
235+
" m_scale=1e-6,\n",
236+
" n_unit=\"kN\",\n",
237+
" m_unit=\"kN.m\",\n",
226238
")"
227239
]
228240
},
@@ -265,6 +277,9 @@
265277
" moment_interaction_results=[mi_res_pos, mi_res_neg],\n",
266278
" labels=[\"Positive\", \"Negative\"],\n",
267279
" fmt=\"-\",\n",
280+
" eng=True,\n",
281+
" n_unit=\"N\",\n",
282+
" m_unit=\"N.mm\",\n",
268283
")"
269284
]
270285
},
@@ -380,7 +395,16 @@
380395
"source": [
381396
"import matplotlib.pyplot as plt\n",
382397
"\n",
383-
"ax = mi_res.plot_diagram(fmt=\"-kx\", labels=True, label_offset=True, render=False)\n",
398+
"ax = mi_res.plot_diagram(\n",
399+
" fmt=\"-kx\",\n",
400+
" labels=True,\n",
401+
" label_offset=True,\n",
402+
" n_scale=1e-3,\n",
403+
" m_scale=1e-6,\n",
404+
" n_unit=\"kN\",\n",
405+
" m_unit=\"kN.m\",\n",
406+
" render=False,\n",
407+
")\n",
384408
"\n",
385409
"# reset axis limits to ensure labels are within plot\n",
386410
"ax.set_xlim(-20, 850)\n",

src/concreteproperties/design_codes/as3600.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""AS3600 class for designing to the Australian Standard AS 3600:2018."""
22

3+
# TODO: have built in options for result classes that can be set by codes!!
34
from __future__ import annotations
45

56
from copy import deepcopy

src/concreteproperties/post.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,21 @@ def string_formatter(
138138
return val_fmt
139139

140140

141-
# TODO: FuncFormatter for plots
141+
def string_formatter_plots(
142+
value: float,
143+
prec: int,
144+
) -> str:
145+
"""Formats a float using engineering notation for plotting.
146+
147+
Args:
148+
value: Number to format
149+
prec: The desired precision (i.e. one plus this value is the desired number of
150+
digits)
151+
152+
Returns:
153+
Formatted string
154+
"""
155+
q = Quantity(value)
156+
return q.render(
157+
form="eng", show_units=False, prec=prec, strip_zeros=True, strip_radix=True
158+
)

0 commit comments

Comments
 (0)