En utilisant les données d'une feuille excel pour tracer le graphique en python
J'ai donc beaucoup de données dans des feuilles de calcul excel. J'ai besoin de ce graphique via python. Je sais comment lire les données à partir d'un fichier excel à l'aide de xlrd et je sais comment le graphique en python à l'aide de matplotlib. Fondamentalement, mes données ressemble a des colonnes de coordonnées x, y les coordonnées et la positif et négatif de y des erreurs. J'ai besoin d'un moyen pour que les données à importer à partir de la feuille de calcul et deviennent des points et des barres d'erreur sur un graphique. Pour être honnête, je suis très nouveau à python et n'ai aucune idée de pourquoi mon code ne fonctionne pas.
import xlrd
import numpy as np
import matplotlib.pyplot as plt
file_location = "C:/Users/Rima/Desktop/apjl731data.xlsx"
workbook = xlrd.open_workbook(file_location)
first_sheet = workbook.sheet_by_index(0)
for col in range(first_sheet.ncols):
x = first_sheet.cell_value(0,col)
y = first_sheet.cell_value(1,col)
yerr = first_sheet.cell_value(2,col)
plt.errorbar(x,y,yerr,fmt='r^')
plt.show()
Je n'ai pas trouvé comment le faire en ligne, comment faire de graphiques dans excel à l'aide de python. Je suis sûr que mon code est probablement manque beaucoup à faire si le travail mais je ne suis pas vraiment sûr de ce que. Aussi pour la yerr, afin d'obtenir une erreur différente de la valeur sur le haut et le bas d'un point de données, j'ai été en passant comme un tableau, par exemple
yerr = np.array([])
avec des valeurs différentes pour les erreurs pour chaque point. Je n'ai aucune idée de comment faire pour importer les données depuis mon positifs des erreurs et des erreurs négatifs sont dans les différentes colonnes de la feuille de calcul. Si quelqu'un sait comment faire pour importer les données, s'il vous plaît aider car il allait me rendre la vie plus facile puisque je n'aurais pas à la main type de données 50 point.
Merci!!!!
Edit:
Un exemple de mes données serait
log(O/H)+12 positive error negative error virgo infall distance
8.56 0.05 0.05 4.61
8.59 0.03 0.03 -
8.54 0.04 0.06 2.97297
8.94 0.13 0.12 8.24493
J'ai des lacunes dans mes données qui est la marque -, je ne sais pas si cela peut provoquer une erreur lors de la tentative de complot. Donc j'ai probablement besoin d'un moyen de sauter les lignes.
Merci encore.
Edit 2:
J'ai toujours une erreur donc, ici, est le traceback.
Merci!
OriginalL'auteur Rima | 2015-07-08
Vous devez vous connecter pour publier un commentaire.
J'ai fait quelques hypothèses. En supposant que vos données comme ceci:
J'ai également modifié la façon dont vous chargez les données légèrement de sorte que vous chargez chaque colonne dans son propre tableau, par exemple.:
vous pouvez avoir positif+négatif erreurs pour une valeur à l'aide errorbar en passant un tableau de la forme:
où
y_error_negative
ety_error_positive
, sont des tableaux qui ont la même longueur quey
.Vous devriez disposer des éléments suivants:
qui donne ceci:
C'est un peu plus difficile de répondre sans plus de détails.
EDIT:
Si vous avez " - " dans les données, il ya beaucoup de façons de les ignorer. Ainsi, un rapide hack avec la façon dont je l'ai décrit ci-dessus, vous pourriez re-vérifier les valeurs de x:
Vous pouvez alors supprimer le " - " et de la remplacer par 0, par exemple,
Un autre moyen serait de faire une boucle sur les valeurs lors de leur chargement, et de faire une
value if value.isdigit() else 0
, sans avoir deux interprétations de la liste.Ou, vous pouvez l'ignorer complètement comme vous l'avez dit:
Il serait plus agréable de ne pas perdre votre métallicité de données si vous pourriez avoir des génériques limite supérieure de la vierge chute de la distance. Si vous continuez à obtenir TypeErrors, donner plus d'informations.
x y pos yerr neg yerr 1 2 3 4 3 2 - 5 0 9 4 6 et je pense que peut-être qui pourrait être la cause de l'erreur que je reçois. TypeError: unsupported operand type(s) pour: "unicode" et "unicode"
Mise à jour de la réponse, vous aurez besoin de fournir plus de choses telles que le traceback si vous avez encore des problèmes.
Bonjour, merci pour la réponse. Je fournis le traceback ci-dessus, car j'ai gardé l'obtention de l'erreur
On dirait qu'il est pas de faire des flotteurs de l'valeurs chargé. Intéressant que je n'avais pas de problèmes. Essayez la version éditée (ie., lancez les valeurs de flotteurs). C'est pourquoi vous obtenez le traceback, comme
u'1' - u'1'
ne pas faire quelque chose pour les chaînes de caractères unicode/.OriginalL'auteur jonnybazookatone