zoukankan      html  css  js  c++  java
  • python matplotlib 绘图线条类型和颜色选择

    import numpy as np
    import matplotlib.pyplot as plt
    
    linestyle_str = [
         ('solid', 'solid'),      # Same as (0, ()) or '-'
         ('dotted', 'dotted'),    # Same as (0, (1, 1)) or '.'
         ('dashed', 'dashed'),    # Same as '--'
         ('dashdot', 'dashdot')]  # Same as '-.'
    
    linestyle_tuple = [
         ('loosely dotted',        (0, (1, 10))),
         ('dotted',                (0, (1, 1))),
         ('densely dotted',        (0, (1, 1))),
    
         ('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)))]
    
    
    def plot_linestyles(ax, linestyles):
        X, Y = np.linspace(0, 100, 10), np.zeros(10)
        yticklabels = []
    
        for i, (name, linestyle) in enumerate(linestyles):
            ax.plot(X, Y+i, linestyle=linestyle, linewidth=1.5, color='black')
            yticklabels.append(name)
    
        ax.set(xticks=[], ylim=(-0.5, len(linestyles)-0.5),
               yticks=np.arange(len(linestyles)), yticklabels=yticklabels)
    
        # For each line style, add a text annotation with a small offset from
        # the reference point (0 in Axes coords, y tick value in Data coords).
        for i, (name, linestyle) in enumerate(linestyles):
            ax.annotate(repr(linestyle),
                        xy=(0.0, i), xycoords=ax.get_yaxis_transform(),
                        xytext=(-6, -12), textcoords='offset points',
                        color="blue", fontsize=8, ha="right", family="monospace")
    
    
    fig, (ax0, ax1) = plt.subplots(2, 1, gridspec_kw={'height_ratios': [1, 3]},
                                   figsize=(10, 8))
    
    plot_linestyles(ax0, linestyle_str[::-1])
    plot_linestyles(ax1, linestyle_tuple[::-1])
    
    plt.tight_layout()
    plt.show()

     

    REF

    https://matplotlib.org/3.1.0/gallery/lines_bars_and_markers/linestyles.html

    The following format string characters are accepted to control the line style or marker:

    characterdescription
    '-' solid line style
    '--' dashed line style
    '-.' dash-dot line style
    ':' dotted line style
    '.' point marker
    ',' pixel marker
    'o' circle marker
    'v' triangle_down marker
    '^' triangle_up marker
    '<' triangle_left marker
    '>' triangle_right marker
    '1' tri_down marker
    '2' tri_up marker
    '3' tri_left marker
    '4' tri_right marker
    's' square marker
    'p' pentagon marker
    '*' star marker
    'h' hexagon1 marker
    'H' hexagon2 marker
    '+' plus marker
    'x' x marker
    'D' diamond marker
    'd' thin_diamond marker
    '|' vline marker
    '_' hline marker

    The following color abbreviations are supported:

    charactercolor
    ‘b’ blue
    ‘g’ green
    ‘r’ red
    ‘c’ cyan
    ‘m’ magenta
    ‘y’ yellow
    ‘k’ black
    ‘w’ white

    REF

    good demos

    https://matplotlib.org/2.1.1/api/_as_gen/matplotlib.pyplot.plot.html

    All possible markers are defined here:

    markersymboldescription
    "." m00 point
    "," m01 pixel
    "o" m02 circle
    "v" m03 triangle_down
    "^" m04 triangle_up
    "<" m05 triangle_left
    ">" m06 triangle_right
    "1" m07 tri_down
    "2" m08 tri_up
    "3" m09 tri_left
    "4" m10 tri_right
    "8" m11 octagon
    "s" m12 square
    "p" m13 pentagon
    "P" m23 plus (filled)
    "*" m14 star
    "h" m15 hexagon1
    "H" m16 hexagon2
    "+" m17 plus
    "x" m18 x
    "X" m24 x (filled)
    "D" m19 diamond
    "d" m20 thin_diamond
    "|" m21 vline
    "_" m22 hline
    0 (TICKLEFT) m25 tickleft
    1 (TICKRIGHT) m26 tickright
    2 (TICKUP) m27 tickup
    3 (TICKDOWN) m28 tickdown
    4 (CARETLEFT) m29 caretleft
    5 (CARETRIGHT) m30 caretright
    6 (CARETUP) m31 caretup
    7 (CARETDOWN) m32 caretdown
    8 (CARETLEFTBASE) m33 caretleft (centered at base)
    9 (CARETRIGHTBASE) m34 caretright (centered at base)
    10 (CARETUPBASE) m35 caretup (centered at base)
    11 (CARETDOWNBASE) m36 caretdown (centered at base)
    "None"" or ""   nothing
    '$...$' m37 Render the string using mathtext. E.g "$f$" for marker showing the letter f.
    verts   A list of (x, y) pairs used for Path vertices. The center of the marker is located at (0,0) and the size is normalized, such that the created path is encapsulated inside the unit cell.
    path   Path instance.
    (numsides, style, angle)  

    The marker can also be a tuple (numsides, style, angle), which will create a custom, regular symbol.

    numsides:
    the number of sides
    style:

    the style of the regular symbol:

    • 0: a regular polygon
    • 1: a star-like symbol
    • 2: an asterisk
    • 3: a circle (numsides and angle is ignored); deprecated.
    angle:
    the angle of rotation of the symbol

    REF

    https://matplotlib.org/3.1.0/api/markers_api.html

    REF

    https://matplotlib.org/stable/tutorials/colors/colors.html

    https://matplotlib.org/stable/gallery/color/named_colors.html

  • 相关阅读:
    非常奇怪的VS2005无法调试的问题
    自已写的“动易PowerEasy2006暴库工具”
    用VBA去除Excel工作表保护密码
    mapgis同arcmap之间的数据转换, 投影变换,误差校正,坐标,基础资料,教程的相关信息的汇集
    HDU You Are the One (dp)
    HDU4291 A Short problem
    Mondriaan's Dream(poj2411)
    HDU 4277 USACO ORZ
    求欧拉回路的路径(usaco3.3Riding the Fences)
    poj2923 (状态压缩01背包)
  • 原文地址:https://www.cnblogs.com/emanlee/p/14470998.html
Copyright © 2011-2022 走看看