Environnement et packages¶
In [27]:
# activer l'environnement
using Pkg
Pkg.activate("env_julia_glmakie")
Activating project at `c:\Users\ricco\Desktop\demo\env_julia_glmakie`
In [28]:
# liste des packages installés
Pkg.status()
Status `C:\Users\ricco\Desktop\demo\env_julia_glmakie\Project.toml` [a93c6f00] DataFrames v1.8.2 [e9467ef8] GLMakie v0.13.11 [7073ff75] IJulia v1.34.4 [fdbf4ff8] XLSX v0.11.10
Importation des données¶
In [29]:
# packages
import DataFrames as DFR
import XLSX
# lecture des données
df = DFR.DataFrame(XLSX.readtable("./data_crm.xlsx"))
# premières lignes
DFR.describe(df)
13×7 DataFrame
| Row | variable | mean | min | median | max | nmissing | eltype |
|---|---|---|---|---|---|---|---|
| Symbol | Union… | Any | Union… | Any | Int64 | DataType | |
| 1 | Age | 41.56 | 21 | 42.0 | 70 | 0 | Int64 |
| 2 | Revenu | 46686.4 | 18000 | 46385.5 | 79318 | 0 | Int64 |
| 3 | ScoreCredit | 549.882 | 300 | 546.5 | 850 | 0 | Int64 |
| 4 | Anciennete | 7.178 | 0 | 5.0 | 19 | 0 | Int64 |
| 5 | Montant | 10357.1 | 3000 | 10369.0 | 24878 | 0 | Int64 |
| 6 | Endettement | 22.2222 | 5.0 | 21.55 | 66.1 | 0 | Float64 |
| 7 | SitFamiliale | Celibataire | Marie | 0 | String | ||
| 8 | TypeContTravail | CDD | Interim | 0 | String | ||
| 9 | SecteurTravail | Commerce | Tech | 0 | String | ||
| 10 | HistoIncidents | 0.408 | 0 | 0.0 | 3 | 0 | Int64 |
| 11 | SituImmobilier | Non | Oui | 0 | String | ||
| 12 | CanalAcquis | Agence | Web | 0 | String | ||
| 13 | CreditOK | Non | Oui | 0 | String |
GLMakie - Nuage de points 3D¶
In [30]:
# importation de la librairie
import GLMakie
Graphique 3 dimensions¶
In [31]:
# graphique 3D
# Figure
fig = GLMakie.Figure(size = (500, 500))
ax = GLMakie.Axis3(
fig[1, 1],
xlabel = "Revenu",
ylabel = "Score Credit",
zlabel = "Montant",
)
# scatter
GLMakie.scatter!(ax,df.Revenu,df.ScoreCredit,df.Montant)
# afficher
display(fig)
GLMakie.Screen(...)
Graphique 3 dimensions avec groupes d'appartenance¶
In [32]:
# même graphique
# mais points illustrés par l'acceptation de crédit
c_oui = (df.CreditOK .== "Oui")
c_non = (df.CreditOK .== "Non")
# refaire avec les 2 graphiques
# Figure
fig = GLMakie.Figure(size = (500, 500))
ax = GLMakie.Axis3(
fig[1,1],
xlabel = "Revenu",
ylabel = "Score Credit",
zlabel = "Montant",
)
# 2 scatters maintenant "Oui" et "Non"
GLMakie.scatter!(ax,df.Revenu[c_oui],df.ScoreCredit[c_oui],df.Montant[c_oui],label="Oui")
GLMakie.scatter!(ax,df.Revenu[c_non],df.ScoreCredit[c_non],df.Montant[c_non],label="Non")
# legende
GLMakie.Legend(fig[1,2],ax)
# afficher
display(fig)
GLMakie.Screen(...)
Graphique 2D avec un filtre¶
In [33]:
# variables à manipuler
x = df.Revenu
y = df.ScoreCredit
z = df.Montant
# figure
fig = GLMakie.Figure(size = (500,500))
# axe pour le scatter plot
ax = GLMakie.Axis(
fig[1,1],
xlabel = "Revenu",
ylabel = "Score Credit",
title = "Scatterplot filtré par Montant"
)
# fixer la largeur du layout
GLMakie.colsize!(fig.layout,1,GLMakie.Fixed(400))
# slider que pourra manipuler l'utilisateur
slider = GLMakie.Slider(
fig[3,1],
range = minimum(z):10:maximum(z),
startvalue = maximum(z)
)
# Points filtrés modifié par le slider
points = GLMakie.lift(slider.value) do zmax
mask = (z .<= zmax)
GLMakie.Point2f.(x[mask], y[mask])
end
# texte du label à afficher, modifié dynamiquement par le slider
txt = GLMakie.lift(slider.value) do zmax
"Montant max = $(round(zmax,digits=0))"
end
# définir un label dont le texte sera modifié dynamiquement
GLMakie.Label(fig[2,1],txt)
# scatter plot
GLMakie.scatter!(
ax,
points,
markersize = 8
)
# affichage
display(fig)
GLMakie.Screen(...)