Skip to content

Commit

Permalink
Intégration de box inspirées du thème pydata sphinx (#58)
Browse files Browse the repository at this point in the history
Liste des box disponibles:

* exercise
* warning
* caution
* danger
* error
* hint
* tip
* important
* note
* attention
  • Loading branch information
linogaliana committed Oct 1, 2020
1 parent 6d010fa commit 18be8f4
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 52 deletions.
12 changes: 10 additions & 2 deletions content/getting-started/05_rappels_fonctions.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,18 @@ data.head()
### from _Module_ Import _fonction_ - seulement une partie du module


{{< panel status="danger" title="warning" icon="fa fa-exclamation-triangle" >}}
Cette méthode n'est pas recommandé **LIEN VERS PARTIE BONNE PRATIQUE**
{{< panel status="warning" title="Warning" icon="fa fa-exclamation-triangle" >}}
Cette méthode n'est pas recommandée car elle rend le code moins intelligible:
d'où vient la fonction `floor`: de `maths` ou de `numpy` ? Elle risque
aussi de créer des conflits de fonction, qui malgré un nom commun peuvent ne
pas attendre les mêmes arguments ou objets
**LIEN VERS PARTIE BONNE PRATIQUE**
{{< /panel >}}





Si on ne veut pas être obligé de donner le nom du module avant d'appeler
la fonction, il y a toujours la possibilité de n'importer qu'une fonction du module. Dans le cas de l'exemple, Python sait que la fonction arange est celle de numpy.

Expand Down
18 changes: 13 additions & 5 deletions content/getting-started/05_rappels_fonctions.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,18 @@ data.head()
### from _Module_ Import _fonction_ - seulement une partie du module


{{< panel status="danger" title="warning" icon="fa fa-exclamation-triangle" >}}
Cette méthode n'est pas recommandé **LIEN VERS PARTIE BONNE PRATIQUE**
{{< panel status="warning" title="Warning" icon="fa fa-exclamation-triangle" >}}
Cette méthode n'est pas recommandée car elle rend le code moins intelligible:
d'où vient la fonction `floor`: de `maths` ou de `numpy` ? Elle risque
aussi de créer des conflits de fonction, qui malgré un nom commun peuvent ne
pas attendre les mêmes arguments ou objets
**LIEN VERS PARTIE BONNE PRATIQUE**
{{< /panel >}}





Si on ne veut pas être obligé de donner le nom du module avant d'appeler
la fonction, il y a toujours la possibilité de n'importer qu'une fonction du module. Dans le cas de l'exemple, Python sait que la fonction arange est celle de numpy.

Expand Down Expand Up @@ -579,8 +587,7 @@ Ces erreurs peuvent être interceptées très facilement et c'est même, dans ce
Cependant, il ne faut pas tout intercepter non plus : si Python envoie une erreur, c'est qu'il y a une raison. Si vous ignorez une erreur, vous risquez d'avoir des résultats très étranges dans votre programme.
<!-- #endregion -->


```python
~~~python
# éviter une division par 0, c'est une bonne idée :

def inverse(x) :
Expand All @@ -589,7 +596,7 @@ def inverse(x) :
return y

div = inverse(0)
```
~~~

```
## Error in py_call_impl(callable, dots$args, dots$keywords): ZeroDivisionError: division by zero
Expand All @@ -599,6 +606,7 @@ div = inverse(0)
## File "<string>", line 3, in inverse
```


<!-- #region -->
L'erreur est écrite noire sur blanc : __ZeroDivisionError__

Expand Down
32 changes: 24 additions & 8 deletions content/visualisation/matplotlib/TP/index.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ library(knitr)
library(reticulate)
knitr::knit_engines$set(python = reticulate::eng_python)
knitr::opts_chunk$set(fig.path = "")
knitr::opts_chunk$set(eval = TRUE, echo = FALSE)
knitr::opts_chunk$set(eval = FALSE, echo = FALSE)
# Hook from Maelle Salmon: https://ropensci.org/technotes/2020/04/23/rmd-learnings/
knitr::knit_hooks$set(
Expand Down Expand Up @@ -89,7 +89,8 @@ import seaborn as sns

## Premier graphique avec l'API `matplotlib` de `pandas`

**Exercice 1: Importer les données et produire un premier graphique**
{{% panel status="exercise" title="Exercice 1: Importer les données et produire un premier graphique"
icon="fas fa-pencil-alt" %}}

1.. Importer les données `velib`. Attention, il s'agit de données
compressées au format `gzip`, il faut donc utiliser l'option `compression`
Expand All @@ -98,8 +99,13 @@ graphiques, reproduire les deux premiers graphiques de la
[page d'analyse des données](https://opendata.paris.fr/explore/dataset/comptage-velo-donnees-compteurs/dataviz/?disjunctive.id_compteur&disjunctive.nom_compteur&disjunctive.id&disjunctive.name):
*Les 10 compteurs avec la moyenne horaire la plus élevée* et *Les 10 compteurs ayant comptabilisés le plus de vélos*.

*Conseil*: Pour obtenir un graphique ordonné du plus grand au plus petit, il faut avoir les données ordonnées du plus petit au
{{< /panel >}}

{{< panel status="note" title="Conseil" icon="fa fa-comment" >}}
Pour obtenir un graphique ordonné du plus grand au plus petit, il faut avoir les données ordonnées du plus petit au
plus grand. C'est bizarre mais c'est comme ça...
{{< /panel >}}



```{python}
Expand Down Expand Up @@ -139,7 +145,8 @@ df1 = df1.reset_index()
df2 = df2.reset_index()
```

**Exercice 2: un peu de style**
{{% panel status="exercise" title="Exercice 2: un peu de style"
icon="fas fa-pencil-alt" %}}

Il y a plusieurs manières de faire un *bar* plot en `seaborn`. La plus flexible,
c'est-à-dire celle qui permet le mieux d'interagir avec `matplotlib` est
Expand All @@ -150,6 +157,8 @@ contrôler la taille du graphique vous pouvez utiliser les arguments `height` et
`aspect`
2. Ajouter les titres des axes et le titre du graphique pour le premier graphique

{{< /panel >}}

```{python}
# Q1 + Q2
g = sns.catplot(x='Comptage horaire', y='Nom du compteur', data=df1, kind = "bar", height = 5, aspect = 4, color = "red")
Expand Down Expand Up @@ -180,7 +189,9 @@ plt.title('Les 10 compteurs avec la moyenne horaire la plus élevée')
plt.show()
```

**Exercice 3: refaire les graphiques**

{{% panel status="exercise" title="Exercice 3: refaire les graphiques"
icon="fas fa-pencil-alt" %}}

Certaines opérations vont nécessiter un peu d'agilité dans la gestion des dates.
Avant cela, il faut créer une variable temporelle (`datetime`). Pour cela, vous
Expand All @@ -199,6 +210,8 @@ en variable de mois
une variable de jour avec `.dt.day`)
4. Refaire le graphique *Comptages vélo au cours des 7 derniers jours * (de l'échantillon)

{{< /panel >}}

```{python}
# Q1
sns.set_style("ticks", {"xtick.color": "green"})
Expand Down Expand Up @@ -279,16 +292,17 @@ directement le package `R` `plotly`...)

### Réplication de l'exemple précédent avec `plotly`

Les modules suivant seront nécessaires pour construire des graphiques
Les modules suivants seront nécessaires pour construire des graphiques
avec `plotly`:

```{python}
```{python, echo = TRUE}
import plotly
import plotly.express as px
```

**Exercice 4: le premier graphique avec plotly**

{{% panel status="exercise" title="Exercice 4: premier graphique avec plotly"
icon="fas fa-pencil-alt" %}}
L'objectif est de reconstuire le premier diagramme en barre avec `plotly`

1. Utiliser la fonction adéquate avec `Plotly Express`. Ne pas prendre le
Expand All @@ -298,6 +312,8 @@ vous pouvez utiliser l'argument `color_discrete_sequence`.
2. Ne pas oublier de nommer les axes, et la couleur du texte de l'axe inférieur
3. Tester un autre thème, à fond sombre. Pour les couleurs, faire un
groupe stockant les trois plus fortes valeurs puis les autres.
{{< /panel >}}


```{python, include = FALSE}
fig = px.bar(df1.sort_values('Comptage horaire', ascending = True), orientation = 'h', x='Comptage horaire', y='Nom du compteur', color_discrete_sequence=["red"], template = "plotly_white")
Expand Down

0 comments on commit 18be8f4

Please sign in to comment.