python绘图03|matplotlib-标记(marker)

作者: pythonic生物人 | 来源:发表于2020-07-25 22:20 被阅读0次

    详细介绍Matplotlib绘图,标记(marker)和线性(linestyle)使用方法;
    自定义marker和linestyle的方法。
    首发于本人公众号:pythonic生物人

    更好的阅读体验请戳:

    python绘图03|matplotlib-标记(marker)和线性(linestyle)使用


    目录

    1、标记(marker)
        matplotlib入门级marker
        matplotlib高手级marker
        matplotlib高高手级marker
        matplotlib中marker 怎么使用 
    
    2、线型(linestyle)
        字符型linestyle
        元组型linestyle
        线型可视化效果
        线型使用 
        元组线型详解
    
    

    1、标记(marker)

    matplotlib入门级marker

    matplotlib一般marker位于matplotlib.lines import Line2D中,共计30+种,可以输出来康康有哪些:

    from matplotlib.lines import Line2D
    print([m for m, func in Line2D.markers.items()
    if func != 'nothing' and m not in Line2D.filled_markers] + list(Line2D.filled_markers))
    

    ['.', ',', '1', '2', '3', '4', '+', 'x', '|', '_', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 'o', 'v', '^', '<', '>', '8', 's', 'p', '*', 'h', 'H', 'D', 'd', 'P', 'X'**]

    这些marker都长什么样纸了,来康康: image

    37种marker,一般绘图可以完全满足了,如果您说不满足,想要更酷炫的,比如说下面这种,


    image

    往下看,都给你,让您满足的溢出来。


    matplotlib高手级marker

    matplotlib官网上就有,请戳:https://matplotlib.org/tutorials/text/mathtext.html。一时冲动爬了下辣个网站,有400+种【感兴趣可以公众号私信我发给您】,长如下这样的:

    可以显示的形状    marker名称
    ϖ   \varpi
    ϱ   \varrho
    ς   \varsigma
    ϑ   \vartheta
    ξ   \xi
    ζ   \zeta
    Δ   \Delta
    Γ   \Gamma
    Λ   \Lambda
    Ω   \Omega
    Φ   \Phi
    Π   \Pi
    Ψ   \Psi
    Σ   \Sigma
    Θ   \Theta
    Υ   \Upsilon
    Ξ   \Xi
    ℧   \mho
    ∇   \nabla
    ℵ   \aleph
    ℶ   \beth
    ℸ   \daleth
    ℷ   \gimel
    /   /
    [   [
    ⇓   \Downarrow
    ⇑   \Uparrow
    ‖   \Vert
    ↓   \downarrow
    ⟨   \langle
    ⌈   \lceil
    ⌊   \lfloor
    ⌞   \llcorner
    ⌟   \lrcorner
    ⟩   \rangle
    ⌉   \rceil
    ⌋   \rfloor
    ⌜   \ulcorner
    ↑   \uparrow
    ⌝   \urcorner
    \vert
    {   \{
    \|
    }   \}
    ]   ]
    |
    ⋂   \bigcap
    ⋃   \bigcup
    ⨀   \bigodot
    ⨁   \bigoplus
    ⨂   \bigotimes
    ⨄   \biguplus
    ⋁   \bigvee
    ⋀   \bigwedge
    ∐   \coprod
    ∫   \int
    ∮   \oint
    ∏   \prod
    ∑   \sum
    

    选取部分marker画个图


    image

    matplotlib高高手级marker

    当然,最高境界是想咋滴就咋滴,自己造一个形状;自定义marker,使用两个美元符号($)包围你想要显示的东东,目前试验了666不错,可以自行实验。

    matplotlib中marker 怎么使用

    非常简单,入门级marker使用时,marker=marker名称;高手级和自定义级marker使用时,marker=$marker名称$;举个栗子:

    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']=['SimHei']  # 用于显示中文
    plt.rcParams['axes.unicode_minus'] = False  # 用于显示中文
    plt.figure(dpi=200)
    #常规marker使用
    plt.plot([1,2,3],[1,2,3],marker=4, markersize=15, color='lightblue',label='常规marker')
    plt.plot([1.8,2.8,3.8],[1,2,3],marker='2', markersize=15, color='#ec2d7a',label='常规marker')
    
    #非常规marker使用
    #注意使用两个$符号包围名称
    plt.plot([1,2,3],[4,5,6],marker='$\circledR, markersize=15, color='r', alpha=0.5,label='非常规marker')
    plt.plot([1.5,2.5,3.5],[1.25,2.1,6.5],marker='$\heartsuit, markersize=15, color='#f19790', alpha=0.5,label='非常规marker')
    plt.plot([1,2,3],[2.5,6.2,8],marker='$\clubsuit, markersize=15, color='g', alpha=0.5,label='非常规marker')
    
    #自定义marker
    plt.plot([1.2,2.2,3.2],[1,2,3],marker='$666, markersize=15, color='#2d0c13',label='自定义marker')
    plt.legend(loc='upper left')
    for i in ['top','right']:
        plt.gca().spines[i].set_visible(False)
    
    image

    2 、线型(linestyle)

    线性 (linestyle)可分为字符串型的元组型的:

    字符型linestyle

    有四种,如下:

    linestyle_str = [
    ('solid', 'solid'), # Same as (0, ()) or '-';solid’, (0, ()) , '-'三种都代表实线。
    ('dotted', 'dotted'), # Same as (0, (1, 1)) or '.'
    ('dashed', 'dashed'), # Same as '--'
    ('dashdot', 'dashdot')] # Same as '-.'

    元组型linestyle:

    直接修改元组中的数字可以呈现不同的线型,所以有无数种该线型。

    linestyle_tuple = [
    ('loosely dotted', (0, (1, 10))),
    ('dotted', (0, (1, 1))),
    ('densely dotted', (0, (1, 2))), ('loosely dashed', (0, (5, 10))),
    ('dashed', (0, (5, 5))),
    ('densely dashed', (0, (5, 1))), ('loosely dashdotted', (0, (3, 10, 1, 10))),
    ('dashdotted', (0, (3, 5, 1, 5))),
    ('densely dashdotted', (0, (3, 1, 1, 1))), ('dashdotdotted', (0, (3, 5, 1, 5, 1, 5))),
    ('loosely dashdotdotted', (0, (3, 10, 1, 10, 1, 10))),
    ('densely dashdotdotted', (0, (3, 1, 1, 1, 1, 1)))]

    线型可视化效果

    看看这些线型长什么样子。 image

    线型使用

    import matplotlib.pyplot as plt
    plt.figure(dpi=120)
    #字符型linestyle使用方法
    plt.plot([1,2,3],[1,2,13],linestyle='dotted', color='#1661ab', linewidth=5, label='字符型线性:dotted')
    
    #元组型lintstyle使用方法 
    plt.plot([0.8,0.9,1.5],[0.8,0.9,21.5],linestyle=(0,(3, 1, 1, 1, 1, 1)), color='#ec2d7a', linewidth=5, label='元组型线性:(0,(3, 1, 1, 1, 1, 1)')
    
    for i in ['top','right']:
        plt.gca().spines[i].set_visible(False)
        
    #自定义inestyle  
    plt.plot([1.5,2.5,3.5],[1,2,13],linestyle=(0,(1,2,3,4,2,2)), color='black', linewidth=5, label='自定义线性:(0,(1,2,3,4,2,2)))')
    plt.plot([2.5,3.5,4.5],[1,2,13],linestyle=(2,(1,2,3,4,2,2)), color='g', linewidth=5, label='自定义线性:(1,(1,2,3,4,2,2)))')
    plt.legend()
    
    image

    元组线型详解

    上图中线型(0,(1,2,3,4,2,2))每个数字是什么意思?理解每个数字的意思就可以自定义线型了。 image

    第一个0的意义,比较黑色和绿色线性即可知道1,2 第一小段线宽1磅,第一和第二段之间距离2磅3,4 第二小段线宽3磅,第二和第三段之间距离4磅2,2 第三小段线宽2磅,第三和第四段之间距离2磅

    参考资料

    https://matplotlib.org/gallery/lines_bars_and_markers/marker_reference.html#sphx-glr-gallery-lines-bars-and-markers-marker-reference-py
    https://matplotlib.org/gallery/lines_bars_and_markers/marker_reference.html
    https://matplotlib.org/tutorials/text/mathtext.html
    https://matplotlib.org/gallery/lines_bars_and_markers/marker_fillstyle_reference.html
    https://matplotlib.org/gallery/shapes_and_collections/marker_path.html
    https://matplotlib.org/gallery/lines_bars_and_markers/linestyles.html

    欢迎关注公众号:pythonic生物人

    干货,真香

    相关文章

      网友评论

        本文标题:python绘图03|matplotlib-标记(marker)

        本文链接:https://www.haomeiwen.com/subject/qjhvlktx.html