Merge branch 'main' into cours

This commit is contained in:
Edgar P. Burkhart 2025-02-27 17:52:01 +01:00
commit b032bb8610
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
5 changed files with 114 additions and 60 deletions

View file

@ -9,12 +9,12 @@ jobs:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Initialize virtual environment - name: Initialize virtual environment
run: /usr/bin/python -m venv .env run: /usr/bin/python -m venv .venv
- name: Install dependencies - name: Install dependencies
run: ./.env/bin/pip install mystmd jupyter jupyterlab_myst ipykernel altair pandas run: ./.venv/bin/pip install -r requirements.txt
- name: Build static HTML - name: Build static HTML
run: | run: |
. .env/bin/activate . .venv/bin/activate
myst build --execute --html myst build --execute --html
- name: Copy files - name: Copy files
run: | run: |

View file

@ -32,32 +32,26 @@ et un niveau **bas** ("Low").
:label: fig:sig-logique :label: fig:sig-logique
```{code-cell} python ```{code-cell} python
:tags: [remove-input] :tags: [remove-input]
import altair as alt import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np import numpy as np
import pandas as pd
rng = np.random.default_rng(25) rng = np.random.default_rng(25)
n = 16 n = 16
t = np.arange(n+1) t = np.arange(n+1)
s = rng.choice([0, 1], n+1) s = rng.choice([0, 1], n)
s[-1] = s[-2]
data = pd.DataFrame({ fig, ax = plt.subplots()
"t": t, ax.stairs(s, t, lw=3)
"s": s, ax.set(
}) xlim=(0, n),
alt.Chart( ylim=(-.5, 1.5),
data xlabel="Temps (s)",
).mark_line( ylabel="Signal logique",
interpolate="step-after",
strokeWidth=3,
).encode(
alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,n)),
alt.Y("s:Q", axis=alt.Axis(title="Signal logique", values=[0, 1], format=".0f")).scale(domain=(0,1)),
).properties(
width="container",
height=100,
) )
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
``` ```
Exemple de signal logique Exemple de signal logique
```` ````
@ -77,35 +71,38 @@ Un exemple de signal analogique est donné en @fig:sig-analogique.
:label: fig:sig-analogique :label: fig:sig-analogique
```{code-cell} python ```{code-cell} python
:tags: [remove-input] :tags: [remove-input]
import altair as alt import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np import numpy as np
import pandas as pd from scipy.interpolate import CubicSpline
from scipy.stats import qmc
rng = np.random.default_rng(25) rng = np.random.default_rng(25)
n = 20 n = 20
t_max = 16 t_max = 16
t = np.linspace(0, t_max, n) t_base = np.linspace(0, t_max, n)
lhs = (qmc.LatinHypercube(d=n-2, rng=rng).random(1)[0] - .5) * t_max/n
t = t_base + np.concatenate(([0], lhs, [0]))
t = t_base
s = 5 * rng.random(n) s = 5 * rng.random(n)
s[-1] = s[-2] s[-1] = s[-2]
data = pd.DataFrame({
"t": t, t_interp = np.linspace(0, t_max, 1024)
"s": s, s_interp = np.clip(CubicSpline(t, s)(t_interp), 0, 5)
})
alt.Chart( fig, ax = plt.subplots()
data ax.plot(t_interp, s_interp, lw=3)
).mark_line( ax.set(
interpolate="basis", xlim=(0, t_max),
strokeWidth=3, ylim=(-.5, 5.5),
).encode( xlabel="Temps (s)",
alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,t_max)), ylabel="Signal analogique",
alt.Y("s:Q", axis=alt.Axis(title="Signal analogique")).scale(domain=(0,5)),
).properties(
width="container",
height=200,
) )
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
``` ```
Exemple de signal analogique Exemple de signal analogique
```` ````
@ -119,32 +116,38 @@ Un exemple de signal analogique est donné en @fig:sig-numerique.
:label: fig:sig-numerique :label: fig:sig-numerique
```{code-cell} python ```{code-cell} python
:tags: [remove-input] :tags: [remove-input]
import altair as alt import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np import numpy as np
import pandas as pd
rng = np.random.default_rng(25) rng = np.random.default_rng(25)
n = 16 n = 16
t = np.arange(n+1) t = np.arange(n+1)
s = rng.integers(0, 16, n+1) s = rng.integers(0, 16, n)
s[-1] = s[-2]
data = pd.DataFrame({ fig, ax = plt.subplots()
"t": t, ax.stairs(s, t, lw=3)
"s": s, ax.set(
}) xlim=(0, n),
alt.Chart( ylim=(-.5, 16.5),
data xlabel="Temps (s)",
).mark_line( ylabel="Signal numérique",
interpolate="step-after",
strokeWidth=3,
).encode(
alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,n)),
alt.Y("s:Q", axis=alt.Axis(title="Signal numérique", values=np.arange(0, 16))).scale(domain=(0,15)),
).properties(
width="container",
height=200,
) )
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
# alt.Chart(
# data
# ).mark_line(
# interpolate="step-after",
# strokeWidth=3,
# ).encode(
# alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,n)),
# alt.Y("s:Q", axis=alt.Axis(title="Signal numérique", values=np.arange(0, 16))).# scale(domain=(0,15)),
# ).properties(
# width="container",
# height=200,
# )
``` ```
Exemple de signal numérique Exemple de signal numérique
```` ````

1
cours/SIN/matplotlibrc Symbolic link
View file

@ -0,0 +1 @@
../../matplotlibrc

43
matplotlibrc Normal file
View file

@ -0,0 +1,43 @@
lines.linewidth: 3
font.family: Fira Code
image.cmap: inferno
axes.linewidth: 1
axes.grid: True
axes.grid.which: major
axes.titlelocation: right
axes.titleweight: 700
axes.axisbelow: True
axes.prop_cycle: cycler(color=["#4269d0","#efb118","#ff725c","#6cc5b0","#3ca951","#ff8ab7","#a463f2","#97bbf5","#9c6b4e","#9498a0"])
axes.formatter.use_locale: True
grid.color: "#bebebe"
grid.linewidth: 1
grid.alpha: 1
hatch.linewidth: 8
hatch.color: "#00000013"
boxplot.showmeans: true
boxplot.meanprops.markeredgecolor: "k"
boxplot.meanprops.marker: "+"
boxplot.flierprops.markerfacecolor: C0
boxplot.medianprops.color: C0
figure.figsize: 8, 4.5
figure.dpi: 96
figure.constrained_layout.use: True
xtick.direction: in
xtick.major.size: 4
xtick.minor.size: 2
ytick.direction: in
ytick.major.size: 4
ytick.minor.size: 2
savefig.format: pdf

7
requirements.txt Normal file
View file

@ -0,0 +1,7 @@
mystmd
jupyter-server
ipykernel
matplotlib
numpy
pandas
scipy