2016-11-07 2 views
1

Ich verwende das PyPlot Paket, um Zahlen in Julia zu generieren. Jede Figur enthält mehrere verschiedene Plots, die ich unter Verwendung von subplot organisiere. Ich möchte in der oberen linken Ecke jedes Unterdiagramms einen Zahlenbuchstaben zuweisen, so dass das erste Unterdiagramm in der oberen linken Ecke ein fettes "a)" erhält, das zweite Unterdiagramm in der oberen linken Ecke ein fettes "b)" und bald. Derzeit ist mein bester Versuch basiert auf der Verwendung title:Julia: Jedem Unterplot mit PyPlot Zahlenbuchstaben zuweisen?

using PyPlot 

figure(1); 
subplots_adjust(hspace=0.4,wspace=0.4) 
subplot(221) ; imshow(rand(20,20)) ; title("a)",loc="left",fontweight="bold") ; xlabel("x") ; ylabel("y") 
subplot(222) ; imshow(rand(20,20)) ; title("b)",loc="left",fontweight="bold") ; xlabel("x") ; ylabel("y") 
subplot(223) ; imshow(rand(20,20)) ; title("c)",loc="left",fontweight="bold") ; xlabel("x") ; ylabel("y") 
subplot(224) ; imshow(rand(20,20)) ; title("d)",loc="left",fontweight="bold") ; xlabel("x") ; ylabel("y") 

Dies scheint in Ordnung zu arbeiten. Idealerweise sollten die Buchstaben der Figur etwas höher über der Figur und weiter links liegen (so dass der Buchstaben auf der linken Seite der y-Achsen-Marke steht). Gibt es einen Weg, um das zu erreichen, was ich anstrebe?

+1

tut 'figtext' Arbeit in Julias pyplot? –

+1

Nur "Text" sollte funktionieren. –

+2

"annotieren" wäre besser als "Text", Sie haben mehr Kontrolle über die Platzierung. – tacaswell

Antwort

1

So etwas wie diese (in Python geschrieben)

import numpy as np 
from itertools import count 
fig, ax_lst = plt.subplots(2, 2) 


def label_subplots(ax_lst, *, upper_case=True, 
        offset_points=(-5, -5)): 
    start_ord = 65 if upper_case else 97 
    for ax, lab in zip(np.ravel(ax_lst), (chr(j) for j in count(start_ord))): 
     ax.annotate(lab, (1, 1), 
        xytext=offset_points, 
        xycoords='axes fraction', 
        textcoords='offset points', 
        ha='right', va='top') 


label_subplots(ax_lst, upper_case=True) 

example output

Verwandte Themen