diff --git a/src/WorldCloud/cloud.py b/src/WorldCloud/cloud.py new file mode 100644 index 0000000..b0aa96c --- /dev/null +++ b/src/WorldCloud/cloud.py @@ -0,0 +1,104 @@ +import matplotlib.pyplot as plt +from wordcloud import WordCloud, STOPWORDS +from random import randint + +""" +Le nuage n'est pas fondamental à l'utilisation, +par conséquent ne pas installer python 3 permet une utilisation correcte de l'application + +Pour installer: Windows +voir scripts + +matplotlib: +python -m pip install matplotlib + +ou (dépend des utilisateurs) + +py -m pip install matplotlib + +worldcloud: +python -m pip install WordCloud + +ou (dépend des utilisateurs) + +py -m pip install WordCloud + +random est normalement inclus dans python + +Pour installer: Linux + +matplotlib: +pip3 install matplotlib + +WordCloud: +pip3 install WordCloud + +Si l'instalation ne marche pas +tentez de mettre à jours le pip: + +Linux: +sudo -H pip3 install --upgrade pi + +Windows: +python -m pip --upgrade pip + +ou + +py -m pip --upgrade pip + +Fonctionement: +Le programme lit le fichier texte produit par la classe java cloudWordGenerator. +Il séprare le texte par mot. +Ensuite il appel la bibliothèque word_cloud qui renvoie une image +Le programme sauvegarde l'image avec la méthode saveimg +L'image et le texte créés seront suprimés lors de l'action sur le bouton retour +""" + + +#programme principale +def main(): + #permet de lire le texte et de placer les mots un par un dans une liste + txtArray = [] + with open('src/main/wordcloud/text.txt') as file: + #separe les lignes + for line in file: + #separe les mots + for word in line.split(): + txtArray.append(word) + + #permet de convertir la liste de mots en string, chaque mot est séparé du précédent par un espace + text = " ".join(i for i in txtArray) + + #appel de la bibliothèque WordCloud pour créer l'image + word_cloud = WordCloud( + width=600, + height=345, + random_state=1, + background_color="white", + colormap="Pastel1", + collocations=False, + stopwords=STOPWORDS, + ).generate(text) + + #affiche l'image + plt.imshow(word_cloud.recolor(color_func = couleur)) + plt.axis("off") + + #sauvegarde l'image + saveimg("cloud") + + +#permet de sauvegarder l'image +def saveimg(name): + name = "src/main/wordcloud/" + name +".png" + plt.savefig(name) + plt.clf() + +#permet de génerer une couleur aléatoire +def couleur(*args, **kwargs): + return "rgb({}, {}, {})".format(randint(0, 255), randint(0, 255), randint(0, 255)) + + +#lance le programme principale +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/WorldCloud/cloudWordGenerator.java b/src/WorldCloud/cloudWordGenerator.java new file mode 100644 index 0000000..4919291 --- /dev/null +++ b/src/WorldCloud/cloudWordGenerator.java @@ -0,0 +1,42 @@ +package Whole.wordCloud; + +import Whole.daoPackage.TagDAO; + +import javafx.scene.control.Alert; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Paths; + + +public class cloudWordGenerator { + public static void main(String[] args) { + try { + String texte = TagDAO.tagAndSize(); + String path = "src/main/wordcloud/text.txt"; + Files.write(Paths.get(path), texte.getBytes()); + ProcessBuilder process = new ProcessBuilder("python", "src/main/wordcloud/cloud.py").inheritIO(); + Process p = process.start(); + p.waitFor(); + BufferedReader Buffered_Reader = new BufferedReader( + new InputStreamReader( + p.getInputStream() + )); + String Output_line = ""; + while ((Output_line = Buffered_Reader.readLine()) != null) { + System.out.println(Output_line); + } + } + catch (IOException | InterruptedException i) { + i.printStackTrace(); + Alert alert = new Alert(Alert.AlertType.ERROR); + alert.setTitle("Une erreur est survenue"); + alert.setHeaderText("Une erreur est survenue durant la création du nuage"); + alert.setContentText("Il est nécessaire d'avoir Python installé ainsi que matplotlib.pyplot, worldcloud et random"); + alert.show(); + i.printStackTrace(); + } + } +} diff --git a/src/WorldCloud/text.txt b/src/WorldCloud/text.txt new file mode 100644 index 0000000..9db3980 --- /dev/null +++ b/src/WorldCloud/text.txt @@ -0,0 +1 @@ +Generated1 Generated1 Generated1 Generated2 Generated2 Generated3 Generated3 Generated4 Generated4 Generated5 Generated5 Generated6 Generated6 Generated7 Generated7 Generated8 Generated8 Generated9 Generated9 Generated10 Generated10 Generated11 Generated11 Generated12 Generated12 Generated13 Generated14 Generated14 Generated15 Generated15 Generated16 Generated16 Generated17 Generated17 Generated18 Generated18 Generated19 Generated19 Generated20 Generated20 Generated21 Generated21 Generated22 Generated23 Generated23 Generated24 Generated24 Generated25 Generated25 Generated26 Generated27 Generated27 Generated31 Generated31 Generated32 Generated32 Generated33 Generated33 Generated34 Generated34 Generated35 Generated35 Generated36 Generated36 Generated36 Generated37 Generated37 Generated37 Generated38 Generated38 Generated39 Generated39 Generated39 Generated40 Generated40 Generated40 Generated41 Generated41 Generated41 Generated42 Generated42 Generated43 Generated43 Generated43 Generated43 Generated44 Generated44 Generated45 Generated45 Generated49 Generated49 Generated50 Generated50 Generated51 Generated51 Generated58 Generated58 Generated59 Generated59 Generated60 Generated60 Generated61 Generated61 Generated62 Generated62 Generated63 Generated63 Generated64 Generated64 Generated68 Generated68 Generated69 Generated69 Generated70 Generated70 Generated71 Generated71 Generated72 Generated72 Generated73 Generated73 Generated74 Generated74 Generated75 Generated75 Generated76 Generated76 Generated77 Generated77 Generated78 Generated78 Generated79 Generated79 Generated80 Generated80 Generated86 Generated86 Generated86 Generated86 Generated110 Generated110 Generated112 Generated112 Generated113 Generated113 Generated114 Generated114 Generated115 Generated115 Generated116 Generated116 Generated117 Generated117 Generated117 Generated118 Generated118 Generated118 Generated118 Generated118 Generated121 Generated121 \ No newline at end of file