朱莉娅:用PyPlot为每个子图分配图形字母?

时间:2016-11-07 20:25:51

标签: matplotlib plot julia subplot imshow

我正在使用PyPlot包在Julia中生成数字。每个图包含我使用subplot组织的几个不同的图。我想在每个子图的左上角分配一个图形字母,这样第一个子图就会变成一个粗体的“a”'在左上角,第二个子图得到一个粗体&b; b)'在左上角,依此类推。目前,我最好的尝试是基于使用title

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")

这似乎工作正常。但理想情况下,图形字母应放置在图形上方稍高的位置,并且向左侧(图形字母位于y轴标签的左侧)。有没有办法实现我的目标?

1 个答案:

答案 0 :(得分:1)

像这样(用python编写)

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