zoukankan      html  css  js  c++  java
  • 【Matplotlib】 标注细节注意

    相关文档:

    由于蓝线和红线的存在,现在刻度标注很难看清楚。我们可以使他们更大,也可以使它们的属性以便使得线呈现半透明的白色背景。这样做我们既可以看到数据也可以看到刻度标注了。

    相关的设置代码:

    ...
    for label in ax.get_xticklabels() + ax.get_yticklabels():
        label.set_fontsize(16)
        label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65))
    ...
    

    设置前图像:

    设置后图像:

    完整的代码如下:

    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(8, 5), dpi=80)
    plt.subplot(111)
    
    X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
    C, S = np.cos(X), np.sin(X)
    
    plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
    plt.plot(X, S, color="red", linewidth=2.5, linestyle="-",  label="sine")
    
    ax = plt.gca()
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data', 0))
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data', 0))
    
    plt.xlim(X.min() * 1.1, X.max() * 1.1)
    plt.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi],
              [r'$-pi$', r'$-pi/2$', r'$0$', r'$+pi/2$', r'$+pi$'])
    
    plt.ylim(C.min() * 1.1, C.max() * 1.1)
    plt.yticks([-1, 1],
              [r'$-1$', r'$+1$'])
    
    plt.legend(loc='upper left')
    
    t = 2*np.pi/3
    plt.plot([t, t], [0, np.cos(t)],
            color='blue', linewidth=1.5, linestyle="--")
    plt.scatter([t, ], [np.cos(t), ], 50, color='blue')
    plt.annotate(r'$sin(frac{2pi}{3})=frac{sqrt{3}}{2}$',
                xy=(t, np.sin(t)), xycoords='data',
                xytext=(10, 30), textcoords='offset points', fontsize=16,
                arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
    
    plt.plot([t, t], [0, np.sin(t)],
            color='red', linewidth=1.5, linestyle="--")
    plt.scatter([t, ], [np.sin(t), ], 50, color ='red')
    plt.annotate(r'$cos(frac{2pi}{3})=-frac{1}{2}$', xy=(t, np.cos(t)),
                xycoords='data', xytext=(-90, -50),
                textcoords='offset points', fontsize=16,
                arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
    
    for label in ax.get_xticklabels() + ax.get_yticklabels():
        label.set_fontsize(16)
        label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))
    
    plt.show()
  • 相关阅读:
    ibatis $与#的区别
    (转载)Hibernate与Jpa的关系
    tomcat web工程 jar包冲突解决方法
    jquery 获取checkbox 选中值并拼接字符集
    mysql BLOB字段转String的方法
    Ajax工作原理
    Spring mvc 具体RequestMapping 参数含义
    覆盖bootstrap的样式
    开园啦,致曾经现在以后的自己~
    SimpleDateFormat 常规用法
  • 原文地址:https://www.cnblogs.com/nju2014/p/5642599.html
Copyright © 2011-2022 走看看