2016-08-09 89 views
0

Ich versuche, 2 Achsen in einem Balkendiagramm mit 2 verschiedenen Wörterbüchern, die genau die gleichen Tasten hat, mit Matplotlib zu plotten. Ich konnte nicht sicherstellen, dass die Elemente (Schlüssel und Werte) der beiden Wörterbücher in der gleichen Reihenfolge sind.Datenausrichtung beim Zeichnen Balkendiagramm aus dem Wörterbuch in Python

Codebeispiel:

ind = numpy.arange(len(types_dict)) # the x locations for the groups 
fig, ax = plt.subplots() 
rects1 = ax.bar(ind, types_dict.values(), 0.35, color='green') 
rects2 = ax.bar(ind+0.35, genome_types_dict.values(), 0.35, color='purple') 
plt.xticks(ind+width, types_dict.keys(), fontsize=10) 
plt.savefig(output+"bar_" + library_name + ".png") 

Wenn für die Wörterbücher die Schlüssel Druck types_dict und genome_types_dict, ihre Schlüssel nicht in Ordnung sind, und ihre Werte daher auch:

types_dict = ['rRNA', 'IGR', '3UTR', 'sRNA', 'tRNA', 'TU', '5UTR', 'AS', 'cis_AS_with_trans_t', 'mRNA', 'other-ncRNA'] 
genome_types_dict = ['rRNA', 'IGR', '3UTR', '5UTR', 'tRNA', 'TU', 'sRNA', 'AS', 'cis_AS_with_trans_t', 'mRNA', 'other-ncRNA'] 

nach einer Lösung gesucht die Ausrichtung zwischen den 2 Wörterbüchern.

Danke,

Antwort

0

Sie Listen anstatt Wörterbücher definieren, weil Sie eckige Klammern sind. Wenn Sie Wörterbücher benötigen, müssen Sie Ihre Daten in {} einschließen. In Python wird die Reihenfolge der Listen beibehalten. Die Reihenfolge der Befehle ist nicht gegeben, es sei denn, Sie verwenden eine OrderedDict.

Weiter sind die Elemente in den zwei Listen, die Sie definiert haben, Zeichenfolgen (sie sind in Anführungszeichen definiert), die Sie auf der Y-Achse gegen Ihre X-Achse (Ind) -Werte zeichnen möchten. Sie benötigen numerische Daten gegen ind indizieren.

Vermutlich möchten Sie wahre Wörterbuch Schlüsselwerte Paare mit Zahlenwertdaten definieren, wie zum Beispiel:

genome_dict = {'rRNA': 1, 'IGR': 2, '3UTR': 3, '5UTR': 4, 'tRNA': 6, 'TU': 7, 'sRNA': 8, 'AS': 9, 'cis_AS_with_trans_t': 10, 'mRNA': 11, 'other-ncRNA': 12} 

dass verwenden, können Sie die Schlüssel extrahieren und sie als Ihr Diagramm Achsenbeschriftungen mit Axt verwenden .set_xticklabels. Sie können die Werte des Wörterbuchs als zweites Argument im Ausdruck rects = ax.bar() verwenden, d. H. Als y-Achsenwerte, und so eine graphische Darstellung numerischer Daten gegen ind erzeugen, wobei jeder Balken als Genomtyp bezeichnet wird.

+0

Danke! Ich werde versuchen, OrderedDict zu verwenden –