Hallo,
http://www.nature.com/nmeth/journal/v6/ ... 247-F3.jpg
ich kenne mich nur rudimentär mit matplotlib aus und habe spontan nichts gefunden, aber vielleicht kann mir von euch jemand helfen. Ich würde gern einen plot wie oben verlinkt erstellen, d.h. spaltenweise Buchstaben in verschiedenen Größen darstellen. Weiß jemand, ob man sich das mit matplotlib zusammenbasteln kann?
Vielen Dank schonmal.
sequence logo mit matplotlib
-
- User
- Beiträge: 38
- Registriert: Dienstag 21. August 2012, 10:59
vielleicht hilft das weiter http://matplotlib.org/users/text_intro. ... light=text
Hab ich schon gelesen, danke.
Das Problem ist, dass ich zwar Buchstaben an beliebiger Stelle plotten kann, aber ich kann sie nicht "verzerren", also z.B. die Breite festsetzen bei varierender Höhe. Mit den fontsize Einstellungen ändert sich immer beides gleichzeitig.
Das Problem ist, dass ich zwar Buchstaben an beliebiger Stelle plotten kann, aber ich kann sie nicht "verzerren", also z.B. die Breite festsetzen bei varierender Höhe. Mit den fontsize Einstellungen ändert sich immer beides gleichzeitig.
Hallo Eugenie,
um Text zu verändern, brauchst Du PathEffects. Leider gibt es nichts vorgefertigtes,
sondern Du mußt Dir selbst eine Klasse schreiben:
Grüße
Sirius
um Text zu verändern, brauchst Du PathEffects. Leider gibt es nichts vorgefertigtes,
sondern Du mußt Dir selbst eine Klasse schreiben:
Code: Alles auswählen
import matplotlib.pyplot as plt
import matplotlib.patheffects
class Scale(matplotlib.patheffects._Base):
def __init__(self, sx, sy=None):
self._sx = sx
self._sy = sy
def draw_path(self, renderer, gc, tpath, affine, rgbFace):
affine=affine.identity().scale(self._sx, self._sy)+affine
renderer.draw_path(gc, tpath, affine, rgbFace)
plt.figure()
txt = plt.text(0, 0, "T", fontsize=64,color='red')
txt.set_path_effects([Scale(1,5)])
txt = plt.text(0.1, 0, "G", fontsize=64,color='green')
txt.set_path_effects([Scale(1,3)])
txt = plt.text(0.2, 0, "B", fontsize=64,color='blue')
txt.set_path_effects([Scale(1,7)])
plt.show()
Sirius
Danke Sirius3, leider war dein Code noch etwas ungeeignet, da ich alles pixelgenau berechnen musste (oder ich hab irgendwas falsch verstanden an deinem Code). Jedenfalls hab ich das mittlerweile mit Tkinter und canvas sehr gut hingekriegt, siehe Bild 
Trotzdem vielen Dank für eure Mühe.
http://img21.imageshack.us/img21/7977/lib03.png

Trotzdem vielen Dank für eure Mühe.
http://img21.imageshack.us/img21/7977/lib03.png