|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2003
Messaggi: 591
|
[python] Matplotlib
Salve, sto plottando dei dati in un grafico 3D con matplotlib.
Su ogni asse c'è una proprietà di una proteina, misurata con una metrica. Ogni punto del grafico 3D rappresenta quindi una proteina Codice:
import csv import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt rawfile = [line for line in open("final.csv").readlines()] csvhandler = csv.reader(rawfile) table = [row for row in csvhandler] fig = plt.figure() ax = Axes3D(fig) xs = np.array([float(row[2]) for row in table[1:]]) ys = np.array([float(row[3]) for row in table[1:]]) zs = np.array([float(row[5]) for row in table[1:]]) ax.scatter(xs, ys, zs) ax.set_xlabel("VolRatio") ax.set_ylabel("LoopDisplacement") ax.set_zlabel("HelixAltDisplacement") plt.show() Fin qui, quasi tutto bene. A parte il piccolo particolare che non c'è verso di far capire alla funzione scatter altri parametri opzionali. fa niente basta che mi plotta i dati. Però vorrei fare in modo di visualizzare come etichette il nome delle proteine passandoci sopra col mouse (perchè se vengono fuori i nomi tutti insieme non si capisce nulla essendo circa 400 punti). Qualcuno ha già usato/sa usare questa libreria e sa darmi una indicazione? Sto guardando nella documentazione ma non riesco tanto ad orientarmi in mezzo a tanta roba. |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Apr 2008
Messaggi: 3
|
Allora lo scorso per un esame avevo anche io il problema di plottare dati scientifici...
sono partito anche io con matplotlib, poi però sono passato ad uno strumento più potente ovvero Mayavi http://code.enthought.com/projects/mayavi/ Non so se già tu lo conoscessi o meno ma mi sono trovato piuttosto bene con l'editor e la relativa visualizzazione grafica sempre sincronizzate. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Apr 2003
Messaggi: 591
|
Quote:
Ho seguito pari pari un esempio Codice:
import csv rawfile = [line for line in open("final.csv").readlines()] csvhandler = csv.reader(rawfile) table = [row for row in csvhandler] x = [float(row[2]) for row in table[1:]] y = [float(row[3]) for row in table[1:]] z = [float(row[5]) for row in table[1:]] s = [1.]*395 labels = [row[0] for row in table[1:]] from enthought.mayavi import mlab mlab.points3d(x,y,z,s,scale_factor=1) mlab.show() ![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2003
Messaggi: 591
|
Niente, risolto.
Semplicemente la scala di un asse ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:16.