Comment creer un fichier serveur afficher des graphes sur python

Résolu/Fermé
spainsteph Messages postés 7 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 11 novembre 2015 - 15 janv. 2015 à 16:38
hharchi9 Messages postés 567 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 - 17 janv. 2015 à 14:23
Bonjour, j'ai besoin d'aide dans la resolu d'un exercice sur python s'il vous plait. Je suis sensé regrouper les données climatiques d'une ville ( tempéraures, précipitations,etc....), et les exporter sur un fichier serveur d'où je devrais faire des grphes ( Température et pluvio sur le meme graphe ). j'y arrive pour une seule valeur mais pas pour deux alors quelqu'un pourrait- il me dire ce qu'il faut faire s'il vous plait. Mon programme ressemble à ca en gros :

import random
import math
def Temperature ()
. . .
return T,P

import json
jsonData = json.dumps(data) #transformer les data en format json
print ('JSON',jsonData) myfile = open ('data.txt', 'w') #nom du fichier data.txt
json.dump(jsonData,myfile)
myfile.close()
import socket
s= socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
host = '127.0.0.1';
port = 8888 ;
jsonData = json.dumps(data)
s.sendto(jsonData.encode('utf-8'),(host,port))
et sur le fichier serveur je recupère les données et je ne réussi à faire qu'un seul graphe
import socket
import
json UDP_IP = "127.0.0.1"; #valable pour toute les machine d'une interface reseau.
UDP_PORT = 8888 ;
sock= socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #UDP
sock.bind((UDP_IP,UDP_PORT))
data, addr=sock.recvfrom(80960)
jsonData=json.loads(data.decode())
print (jsonData)
import matplotlib.pyplot as plt
plt.figure(1)
plt.plot(range(0,365), jsonData[0]['Temperature'],'b--')
plt.show()


comment faire pour "ploter" deux variables sur le meme graphe au cas ou je fais plus haut return T,P s'il vous plait
A voir également:

2 réponses

hharchi9 Messages postés 567 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
15 janv. 2015 à 16:57
Bonjour,

Vous cherchez à afficher deux graphiques sur le même dessin c'est bien ça ?

Pour ce faire il suffit de faire un second plot à la suite du premier avec les données de la seconde courbe.
1
spainsteph Messages postés 7 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 11 novembre 2015
15 janv. 2015 à 18:05
le truc c'est que les données de la seconde courbe ( comme celle de la première d'ailleurs) sont retournées par la fonction que j'ai crée plus sauf que je sais pas quelle serait la syntaxe pour le second plot. Tout en haut (4ième ligne ) jai fais return T,P...en effacant le P je reussi a faire un plot de T...mais le return de deux valeurs..j'arrive pas
0
hharchi9 Messages postés 567 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
15 janv. 2015 à 22:34
Si vous donniez le morceau de code dans lequel vous utilisez cette fonction (les valeurs P et T) on pourrais peut-être y voir plus clair car dans ce que vous avez donné, je ne vois nulle part où vous utilisez la fonction
0
spainsteph Messages postés 7 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 11 novembre 2015
15 janv. 2015 à 23:17
en fait j'ai pas voulu mettre le programme entier parce qu'il serait un peu long sinon voila...

import random



def Temperature ():



#Tableau du nombre de jour par mois
Mois = ['janvier','fevrier','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','decembre']

Nmois=[31,28,31,30,31,30,31,31,30,31,30,31]

#Tableau des temperqtures minimales par mois
Tmin = [-1,0,3,5,9,12,14,14,11,8,3,1]

#Tableau des temperatures maximales par mois
Tmax = [8,9,13,16,20,24,25,26,22,18,11,8]

#Tableau des temperatures moyennes par mois
Tmoy = [4,3,7,11,13,15,17,19,17,14,10,5]

T=[]


for i in range (0,12):
Ttmp= []

for j in range (0,Nmois[i]):
tmpValue = random.uniform(Tmin[i],Tmax[i])

Ttmp.append (tmpValue)
TmoyTmp = sum(Ttmp)/len(Ttmp)
difference = Tmoy[i]-TmoyTmp
#
if difference !=0 :

for j in range (0, Nmois[i]):
T.append('%.2f' % (Ttmp[j]+difference))


return T




data = [ {'fichier' : 'Données' ,'Ville' : 'Clermont Ferrant', 'Temperature': Temperature()





}
]

import json


jsonData = json.dumps(data)
print ('JSON',jsonData)


myfile = open ('data.txt', 'w')
json.dump(jsonData,myfile)
myfile.close()


import socket

s= socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

host = '127.0.0.1';
port = 8888 ;

jsonData = json.dumps(data)
s.sendto(jsonData.encode('utf-8'),(host,port))
0
spainsteph Messages postés 7 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 11 novembre 2015
15 janv. 2015 à 23:21
ca c'est le code ou je defini ma fonction Temperature et je retourne T , je les met sous forme Json et j'exporte vers un serveur.... et le code du serveur et du plot fait sur mon fichier nommé Data ( et donc juste sur la temperature parce que ma fonction ne retourne que T pour le moment) est le suivant :

import socket
import json

UDP_IP = "127.0.0.1"; #valable pour toute les machine d'une interface reseau.
UDP_PORT = 8888 ;

sock= socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #UDP

sock.bind((UDP_IP,UDP_PORT))

data, addr=sock.recvfrom(8096)


jsonData=json.loads(data.decode())
print (jsonData)


import matplotlib.pyplot as plt

plt.plot(range(0,365), jsonData[0]['Temperature'],'b--')
plt.show()
0
spainsteph Messages postés 7 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 11 novembre 2015
15 janv. 2015 à 23:24
Par la suite j'ai modifié un peu ma fonction pour retourner T et P et donc j'aimerais savoir comment du fichier serveur je pourrais faire un plot sur les deux variables ( et si possible sur le meme graphe )...Merci
0
hharchi9 Messages postés 567 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
16 janv. 2015 à 17:58
Petite question toute bête ne serait-il pas plus simple de créer deux fonctions distinctes ?

D'après ce que j'ai compris, vs souhaitez représenté l'évolution de T et de P en fonction des jours de l'année, c'est bien ça ?

Pour opérer sur les deux valeurs que retourne votre fonction, il faut utiliser

Temperature()[0]
et
Temperature()[1]
qui vous donneront respectivement T et P si votre fonction retourne :
 return T,P


A partir de là vous pouvez exécuter un nouveau plot à la suite du premier en remplaçant T par P et vous devriez obtenir le résultat escompté.
0