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
Rowvariablemeanminmedianmaxnmissingeltype
SymbolUnion…AnyUnion…AnyInt64DataType
1Age41.562142.0700Int64
2Revenu46686.41800046385.5793180Int64
3ScoreCredit549.882300546.58500Int64
4Anciennete7.17805.0190Int64
5Montant10357.1300010369.0248780Int64
6Endettement22.22225.021.5566.10Float64
7SitFamilialeCelibataireMarie0String
8TypeContTravailCDDInterim0String
9SecteurTravailCommerceTech0String
10HistoIncidents0.40800.030Int64
11SituImmobilierNonOui0String
12CanalAcquisAgenceWeb0String
13CreditOKNonOui0String

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(...)