Προς το περιεχόμενο

Γραφήματα με python


k33theod

Προτεινόμενες αναρτήσεις

Με αφορμή την ερώτηση κάποιου για το matplotlib σκέφτηκα ότι ίσως αρκετοί από εμάς ενδιαφέρονται για γραφήματα

Φυσικά η κάθε γλώσσα έχει τις δικές της βιβλιοθήκες Εγώ έφτιαξα αυτό το μικρό tutorial-παράδειγμά οδηγό για τη γλώσσα python με την βιβλιοθήκη matplotlib

 

Το πρώτο που πρέπει να κάνουμε για να μπορούμε να το υλοποιήσουμε είναι να εγκαταστήσουμε μία έκδοση python στον υπολογιστή μας 3.5 η και 3.4 από το site της γλώσσας https://www.python.org/doc/

Έπειτα πρέπει να εγκαταστήσουμε το matplotlib http://matplotlib.org/. και το numpy http://www.numpy.org/ Καλύτερα να το κάνουμε με βάση της οδηγίες της γλώσσας python για εγκατάσταση βιβλιοθήκης https://docs.python.org/3/installing/index.html και όχι με βάση της οδηγίες του matplotlib, numpy. 

 

Το πρόγραμμά μας το γράφουμε σε έναν text editor ή και notepad++ και καλύτερα να το σώσουμε με κατάληξη .py ή .pyw

 

Πρώτα εισάγουμε τις βιβλιόθηκες

 

import matplotlib.pyplot as plt #και

import numpy as np

import matplotlib.font_manager as fm # Για να έχω ελληνικά αλλιώς δεν χρειάζεται

 

# Για να έχω ελληνικά

fp1 = fm.FontProperties(fname=r'C:\WINDOWS\Fonts\arial.ttf')

 

#Μετά γράφουμε τη συνάρτηση το γράφημα της οποίας θέλουμε να δούμε

def f(x):

    return np.cos(x**2)-x

 

# Στις τιμές του χ που θέλουμε να βγεί η γραφική παράσταση [-30 30)δημιουργώ πολλά καμάτια (1000)

x= np.linspace(-30,30,1000)

 

# Ορίζουμε ποιόν τίτλο θέλουμε (προεραιτικό)

plt.title(u'Η γραφική μου παράσταση', fontproperties=fp1,fontsize=14, color='red')

 

#Ορίζουμε το viewport μπορεί να είναι διαφορέτικό από αυτό που ορίσαμε με το linspace (προεραιτικό)

plt.axis([-10,10,-10,10]) #παίρνει τέσσερις τιμές xmin, xmax, ymin, ymax

 

#Δημιουργούμαι τα σημεία

plt.plot(x,f(x),'g-',linewidth=2.0) #Η plot παίρνει και ως argument το χρώμα και τύπο της γραμμής green line default b- συνεχόμενη μπλε

 

#Ετικέτα για τον άξονα των Χ (προεραιτικό)

plt.xlabel('x')

 

#Ετικέτα για τον άξονα των y (προεραιτικό)

plt.ylabel(r'f(x)=np.cos(x**2)-x')

 

#Δημιουργούμαι grid (προεραιτικό)

plt.grid(True)

 

#και τέλος

plt.show()

 

#Αν θέλουμε μόνο να δούμε τη γραφική παράσταση τις περισσότερες γραμμές κώδικα (προεραιτικό) μπορούμε να τις παραλείψουμε

#Τρέχουμε το αρχείο μας με διπλό κλικ ή με python όνομα_αρχείου στη γραμμή εντολών

 

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 101
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Ωραίο, αλλά τώρα κάνε το notebook και ανέβασέ το εδώ για να βλεπεται κιόλας ;)

Βασικά δεν ξέρω πως γίνεται και γιατί να το κάνω, αλλά, μεταξύ μας, είναι clopy paste το tutorial του http://matplotlib.org/   στα ελληνικά. :X

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το Η plot παίρνει και ως argument..........θα μπορούσε να γραφτεί : Η plot παίρνει τιμές...(το ως δεν έχει σημασία...εκτός και αν βρει κανείς άλλο τρόπο...να δώσει τιμές....)

Για "optional" μπορούμε να πούμε Η plot μπορεί να πάρει τιμές

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι. Arguments παίρνει. Και εάν ήξερες Python θα γνώριζες ότι αυτά λέγονται και named arguments στην περίπτωση του line width ή απλώς arguments για τα πρώτα (που δεν καλούνται με όνομα). Εάν έβαζε και το όνομα του argument για το χρώμα και το στυλ τότε θα ήταν και αυτό named. Και εδώ κανείς θα αναρωτηθεί (πάλι) πώς κάποιος που προφανώς δεν έχει ιδέα διορθώνει άλλους... αλλά τεσ'πά

 

Just for the fun of it... Πόσες φορές έχεις κάνει plots με την matplotlib; Ξέρεις την βιβλιοθήκη; Την έχεις χρησιμοποιήσει;

 

 

Βασικά δεν ξέρω πως γίνεται και γιατί να το κάνω, αλλά, μεταξύ μας, είναι clopy paste το tutorial του http://matplotlib.org/ στα ελληνικά. :X

.

 

Yeap!

 

Περισσότερο ενδιαφέρον θα είχε να κάτσει κανείς να συγκεντρώσει πληροφορίες από το όχι τόσο καλό documentation της lib για τα διάφορα components που έχει παρά να δώσει 10 γραμμές που κάνουν plot χωρίς να εξηγεί τι κάνει κάθε argument....

 

Επίσης, η numpy δεν είναι υποχρεωτική. Οποιοδήποτε iterable object (είτε subclass του iterable ή με implement των Magic methods) κάνει, αρκεί να επιστρέφει primitive types.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Groot,

πάλι την έκανες...!

Τα named arguments δεν είναι εφεύρεση της Python, αλλά δεν το ξέρεις (βάσει της φρασεολογίας σου....απαντώ).

Πρόγραμμα της Μ2000 χειρίζεται το Word με χρήση named arguments. Για να το πετύχω διόρθωσα μια type library (Edanmo OLE Type Library), είχαν λάθος ορίσει το τύπο της μεταβλητής, και ενώ ήθελε πίνακα αλφαριθμητικών είχαν ορίσει αλφαριθμητικό, οπότε για ένα αλφαριθμητικό έπαιζε,  αλλά για πίνακα όχι!

Αυτή είναι εντολή της Μ2000

Μέθοδος Κείμενα, "add", "", DocumentType:=WdNewWebPage ως έγγραφο1

 

Just for the fun, το matplotlib δεν μου λέει τίποτα! Δεν έχει κάτι το ειδικό. Αν είσαι ωραίος φτιάξε παράδειγμα με Ιστόγραμμα σε Python χωρίς βιβλιοθήκη!

 

Αυτό είναι με την Μ2000, με απλές εντολές, που παρέχει η γλώσσα και όχι κάποιο ειδικό αντικείμενο!

istogramma.png

 

Απλά το να παινεύεσαι ότι ξέρεις ένα αντικείμενο όπως το matplotlib, είναι άσκοπο! Σιγά τα αυγά!

Κάθε φορά που θα λες για κάτι που δεν "ξέρω" θα παίρνεις πληρωμένη απάντηση!

Εγώ παινεύομαι μόνο για ότι κάνω! Αποδεδειγμένα!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Groot,

πάλι την έκανες...!

Τα named arguments δεν είναι εφεύρεση της Python, αλλά δεν το ξέρεις (βάσει της φρασεολογίας σου....απαντώ).

Εάν μου βρεις πού έγραψα ότι είναι εφεύρεση της Python, θα πω ότι έχεις δίκιο. Μέχρι να το κάνεις, απλά αποδέξου ότι είπες για μία ακόμα φορά πατάτα για κάτι που δεν έχεις καμία ιδέα (ήτοι, ότι δεν είναι arguments αλλά "τιμές" ) συν ότι απλά προσπαθείς να ρίξεις λάσπη επειδή σε ενοχλεί που κάποιοι δείχνουν ότι γράφεις για αυτά που δεν γνωρίζεις και πετάς μαργαριτάρια.

 

Δεν ξέρω τι κάνεις με named arguments στην Μ2000... αλλά με τα όσα έχεις γράψει εδώ θεωρώ πιθανό να έχεις καταλάβει ότι κάνεις άλλο από αυτό που πραγματικά κάνεις.

 

 

 

Just for the fun, το matplotlib δεν μου λέει τίποτα! Δεν έχει κάτι το ειδικό. Αν είσαι ωραίος φτιάξε παράδειγμα με Ιστόγραμμα σε Python χωρίς βιβλιοθήκη!

Όσο για την Μ2000 και ότι κάποιος πρέπει να φτιάξει ιστόγραμμα σε Python χωρίς βιβλιοθήκη... τι να πω; Ξεπέρασες τον εαυτό σου!

 

Απλά το να παινεύεσαι ότι ξέρεις ένα αντικείμενο όπως το matplotlib, είναι άσκοπο!

Αυτό παίζει να μπαίνει στο top 20 των όσων έχεις πει!

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αφού λοιπόν δεν είναι εφεύρεση της Python, γιατί έμεινες σε αυτό; Δεν σου κάνει η λέξη τιμή αντί για argoument; Μπορείς να εξηγήσεις γιατί;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εάν μου βρεις πού έγραψα ότι είναι εφεύρεση της Python, θα πω ότι έχεις δίκιο.

Super-human επαγωγικές ικανότητες.

 

M2000 ετοιμάζω γραφικές με assembly μόνο για την πάρτη σου.

Αφού λοιπόν δεν είναι εφεύρεση της Python, γιατί έμεινες σε αυτό; Δεν σου κάνει η λέξη τιμή αντί για argoument; Μπορείς να εξηγήσεις γιατί;

 

Άλλο τιμή, άλλο argument. Έφτιαξες μία γλώσσα. Πρέπει να ξέρεις να τα διαχωρίζεις.

 

BTW, με Python έχει σχέση το νήμα. Κάποιες βιβλιοθήκες είναι Η python.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Άλλο τιμή, άλλο argument. Έφτιαξες μία γλώσσα. Πρέπει να ξέρεις να τα διαχωρίζεις.

 

Κάτι είπες τώρα και εσύ... Ετοιμάσου για μία απάντηση "πληρωμένη" όπου για να ακολουθήσεις έστω και λίγο την ροή και να καταλάβεις κάποιο νόημα θέλεις 1 λίτρο LSD ενδοφλέβια.

 

Νομίζεις ότι εάν τα είχε διαχωρισμένα θα έγραφε ό,τι γράφει;

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@gon1332,

Ελληνικά γνωρίζω. Δεν λέω ότι η plot θα γίνει μια τιμή, αλλά ότι παίρνει τιμή. Οι συναρτήσεις παίρνουν τιμές, και όταν απευθυνόμαστε στο είδος, λέμε για παραμέτρους. Π.χ. αν έχω συνάρτηση F(x,y) τα x και y είναι παράμετροι αλλά δεν δίνω παραμέτρους αλλά τιμές που θα πάνε στις παραμέτρους με το F(2,3).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

BTW, με Python έχει σχέση το νήμα. Κάποιες βιβλιοθήκες είναι Η python.

Μα γιατί;

 

Θα πρέπει να μπορείς να ανοίγεις wav files χωρίς έξτρα βιβλιοθήκη (import wave).

Να έχεις πρόσβαση στο OS χωρίς έξτρα βιβλιοθήκη (import os).

 

και άλλα πολλά...!

 

Αφού το κάνει η Μ2000 τότε γιατί όχι η Python;

 

 

@gon1332,

Ελληνικά γνωρίζω. Δεν λέω ότι η plot θα γίνει μια τιμή, αλλά ότι παίρνει τιμή. Οι συναρτήσεις παίρνουν τιμές, και όταν απευθυνόμαστε στο είδος, λέμε για παραμέτρους. Π.χ. αν έχω συνάρτηση F(x,y) τα x και y είναι παράμετροι αλλά δεν δίνω παραμέτρους αλλά τιμές που θα πάνε στις παραμέτρους με το F(2,3).

gon, εγώ στα είπα. Για να μην λες δηλαδή! :D

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάνεις λάθος, έχει σημασία αν κάτι το παρέχει η γλώσσα ή σε βάζει και το ψάχνεις! Εδώ η Python δεν σε βάζει μεν να το ψάξεις, αλλά με αυτόν τον τρόπο δεν έχεις μάθει να χρησιμοποιείς βασικές εντολές γραφικών. Το θέμα είναι το εγχειρίδιο και ας σταθούμε στην ορολογία.

Δώσε λοιπόν Groot την ελληνική ορολογία, σε αυτό που έκανες ένσταση! Εγώ έδωσα και εσύ αντί να δώσεις κάτι καλύτερο ή άλλο διαφορετικό, γύρισες την συζήτηση στα name arguments και στο αν έχω ή όχι χρησιμοποιήσει την συγκεκριμένη βιβλιοθήκη!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...