Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 104 additions & 0 deletions src/WorldCloud/cloud.py
Original file line number Diff line number Diff line change
@@ -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()
42 changes: 42 additions & 0 deletions src/WorldCloud/cloudWordGenerator.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
1 change: 1 addition & 0 deletions src/WorldCloud/text.txt
Original file line number Diff line number Diff line change
@@ -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