Python+matplotlib+字母数字加上划线

如题.

import matplotlib.pyplot as plt


def numStr(num):
    if num >= 0:
        return str(num)
    return r'$\overline{' + str(abs(num)) + '}$'


if __name__ == '__main__':
    plt.figure(num="Crystal Diffraction", facecolor="black", figsize=(7, 6))

    x = (1, -4, 4, 9, 4, 1)
    y = (2, 5, 8, 5, -1, 2)

    plt.scatter(x, y, c="white", s=100)  # 绘制散射点

    # 画上坐标
    for xy in zip(x, y):
        plt.annotate("%s %s" % xy, xy=xy, xytext=(-10, 4), textcoords="offset points", c="red")

    for i in range(len(x)):
        # r'$\overline{a}$'  字母a,加上上划线
        plt.text(x[i]-0.5, y[i]+0.5, r'$\overline{a}$', fontsize=10, color="gray")

        # 拼接
        # numStr() 方法是 正数返回字符串, 负数返回带上划线的字符串
        plt.text(x[i]-1, y[i]+1, numStr(x[i]) + numStr(y[i]), fontsize=10, color="white")

    plt.xticks([])  # 去掉x轴
    plt.yticks([])  # 去掉y轴
    plt.axis('off')  # 去掉坐标轴
    plt.show()

posted @ 2021-08-05 11:13  QLuffe  阅读(1101)  评论(0)    收藏  举报