如何将Matplotlib标记符号显示为字符串

时间:2017-04-25 15:34:27

标签: python matplotlib symbols markers

我正试图设置" suptitle"我的Matplotlib多图如下所示:

plt.gcf().suptitle("pc1\npc2", fontsize=10)

下图显示了它的外观:

enter image description here

现在而不是' pc2'在下一行,我想展示一种伪传奇,但没有任何装饰,只是如下面相应的R图所示的简单符号:

enter image description here

见第二行显示' square'接着是MRP这个词,另一个是XRD,然后是XRD等?我试图复制它(不完全但很接近)。正如您在上面显示的代码行中所看到的那样,新行字符" \ n"将标题文本字符串推送到下一行。如果我可以使用标记符号(方形,三角形,星形等)来格式化第二行,那么我已经完成了设置。确切的标记无关紧要,我可以使用任何可以解释的标记,并通过标题字符串显示为符号。我选择的标记向量如下所示(但可以更改为任意一组5个符号):

markers_list = ["s", "o", "*", "^", "+"]

如果您想查看整个Python代码和更多详细信息,可以在以下主题中看到:

MatplotLib Seaborn Multiple Plot Formatting

我不想显示该主题中讨论的图例。第二行上的简单字符串表示就足够了。

1 个答案:

答案 0 :(得分:0)

以下是在其中一个图上使用图例但将其放置在图形坐标中的示例。

enter image description here

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(12)
import seaborn.apionly as sns
plt.rcParams["figure.figsize"] = 7,3.5

markers_list = ["s", "o", "*", "^", "+"]
labels = ["MRP","XRD","Geochem","GC", "OR"]

fig, axes = plt.subplots(ncols=3)
for i, ax in enumerate(axes):
    a = np.random.normal(size=(66))
    sns.distplot(a, ax=ax, hist_kws={"ec":"k","fc":(i/3.,0,1-i/3.)})
    this_x= np.array([-1,0,1.5])
    data_x, data_y = ax.lines[0].get_data()
    this_y = np.interp(this_x, data_x, data_y)
    for i, m, l in zip(range(len(labels)), markers_list, labels):
        ax.plot(this_x, this_y-i*0.016,  marker=m, markersize = 3, 
                color="black", ls="", label=l)

fig.suptitle("pc1",x=0.5,y=0.98)

axes[0].legend(loc="lower center", ncol=5,
        bbox_to_anchor=(0.5,0.8),bbox_transform=plt.gcf().transFigure)
plt.tight_layout()
plt.subplots_adjust(top=0.8)
plt.show()