Comment creer un fichier serveur afficher des graphes sur python
Résolu
spainsteph
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
hharchi9 Messages postés 567 Date d'inscription Statut Membre Dernière intervention -
hharchi9 Messages postés 567 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Comment creer un fichier serveur afficher des graphes sur python
- Comment créer un groupe whatsapp - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Creer un fichier .bat - Guide
2 réponses
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.
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.
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
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))
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))
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()
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()
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
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é.
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é.